System.Windows.Formsの覚書【PmxEプラグイン】

前にどう書いたか見ても思い出せなくてしぬ。

合ってるのか合ってないのかすらわからない手探りのやり方をメモしておかないと覚えてない。

・基本的な処理はmain.csに記述してある。
 直接呼び出して処理させるだけならここで完結する。

・Fom1.csでフォームのOKを押した時に、main.csの処理を実行して欲しい。
 プラグインのForm1を開いたまま別のボーンを選択してまた処理させたいので、
 ポチポチできるようにしたい。

・main.csは動くことをPmxEで確認済み。

・Form1.csにOKボタンを設置、押したらOKを出すように設定。
this.button1.DialogResult = DialogResult.OK;

【Form1.csの記述】
前に作ったプラグインを見るに、
・namespaceは全て共通にしておかなければならない。
・自動で作成されるnamespaceの下は「 public partial class Form1 : Form 」だけど、
partial class Form1: System.Windows.Forms.Form
{
public Form1(CSScriptClass 名前)
}
になっている。
なんかここで、名前を分割しておくとなんかうまくいく。
CSScriptClassがmain.csで書いてあるpartial classの名前なので、
別に読み込んだりする時は多分ここを変えないといけないんだと思う。
(ここまで自分で勝手に判断していることで書いているので、参考にしない方がいいです)

main.csに
using (var m_form = new Form1(this))
{
if (m_form.ShowDialog() != DialogResult.OK) return;
{何かの処理}
}
と書くと、OK以外が返ってきた時に何が起こるかを記述できる。
たぶん。

あ!できた!すごい!!

つまり、ボタンからどのpartial classをやらせるかを記述する訳じゃなくて、
そもそも動いてるのがmain,csでその途中でformが開かれて、
ボタンでどういうものを発したかを受け取ってるのかな…。


困ってること。
・OKを返した時にはwindowを閉じないで欲しい。
→label1で冒頭を指定しておいて、最後にgoto label1;で返る。

・formが開いてる間に、Pmx編集画面がさわれない。
→「モーダルフォーム」と言うらしい。
 「モードレスフォーム」で開くといじれる。

usingを使うとフォームが閉じちゃうのはモーダルフォームのせい?みたい。
(参考:http://www.itlab51.com/?p=2446

怒られた。
nnn3661.jpg
うーん。form1はthis.Visible = false; って書いたんだけどなぁ。

何がダメなんだよぅ、とメソメソしていたが、よく見たら、
if (m_form.ShowDialog() != DialogResult.OK) return;
って書いてあった。
.ShowDialog() って。
モーダルは→.ShowDialog()
モードレスは→.Show()

でもDialogResultはhowDialog() でしか受け取れないっぽい。

わからん、無理。

コメントの投稿

非公開コメント

プロフィール

のののP

Author:のののP
絵描いたり動画作ったり歌ったり3Dモデリングしたりゲームしたり。

■ニコ動
mylist/2325248
■youtube
nononoP00
■Pixiv
id=141058
■連絡
opm_niconico○yahoo.co.jp
○→@

MMD配布系まとめ
PMDE講座まとめ
blender tips

配布物以外の無断使用禁止。

商用利用、商業依頼については上記連絡先までメール下さい。

カテゴリー
アーカイブ
ブログ内検索
リンク
RSSフィード