visual basicのeventとcontrolについての質問です。
初心者で苦労しています。以下のようなcodeingをしましたが上手く行きません。宜しくお願いします。
1.下記のcall updatefileによりupdatefile内でcombobox内のdataを設定します。これは次のdialogで
設定どおりに出ています。しかし元のsub startdialog1に帰ってdialogを表示してみるとcombobox
内は空となっています。 subroutineが変わるとformの controlは消えるのでしょうか。
もしそうならどの様にすれば良いのでしょうか。
(pushdata変数等をpublicとして再度comboに入れることもやりましたがNG)
2.STARTDIALOG1の初めに RADIO BUTTONの変更のCODEが有りますが、此処でEVENTが
発生しUPDATEFILEに行きます。
DIALOGを出すまでは初期値を設定しDIALOG上でCLICK等して変更をするCODEなので
不具合です。 (ほかにもいろいろ同じCODEが入っていますので)
CODE上の設定変更はEVENTが発生しないように、DIALOGからの変更はEVENT発生としたい
のですがどの様にしたら良いでしょうか。(普通そうなので何か勘違いしてるかも)
INTERNETで見るとAddHandler,AddressOf,REmoveHandlerなどが記載されていますが、
書き方と何処に書くのか判りません。(本当に必要かも?)
よろしくお願いします。
(以下のcodeは読みやすいように簡略化しています、code errorは大目に見て下さい。
---------------------Form1.vbに記載---------------------------------------
Sub STARTDIALOG1() '此処から処理が始まる
with cform2 as Fform2
.Radio_btn1.Checked = True ’ここへくるとbuttonのeventが発生,routineにいき,updatefileへいく
Call UpdatePfile(1) 'ここはcomboboxの初期値を設定する(UPDATEPFILEを使う)
.ShowDialog() ’UpdatateFileでは入っていたがCOMOBOXの中は空になっている
この後comboboxのdataの選択などをdialogue上で設定値を変更する。
end with
end sub
-----------------------form1.vbに記載----------------------------------
sub UpdatePfile(ByVal cntlNO)
'PushDataはこの前にREADして設定している、keがそのDATAの個数
For k = 1 To ke
cForm2.Combo_P.Items.Add(pushdata(k)) ’COMBOBOX Comb_Pに一覧として入れる
Next k
cForm2.ShowDialog() 'ここではCOMBOBOXにPUSHDATAが入ったLISTがでる
end sub
---------------------------------------------------------------------------
DisalogはForm2に作成
radioボタン Radio_btn1とRadio_btn2,combobox combo_P等をsetしている
'---------------------------Form2.vbに記載------------------------------------
Private Sub push_button(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Radio_BTN1.CheckedChanged,Radio_BTN2.CheckChanged
Dim cls As Form1
RDBTN = 1
If RDBTN > 0 Then Call cls.UpdatePfile(RDBTN)
end Sub
kmeeさん
ご回答ありがとうございました。結局removehandler/addhandlerを見よう見まねで入れて出ないようになりました。また1のsub間のdataについてはdim cform2 as new form2()が両方のsubに定義されていました。
これって別のformになっていたのではないかと思います。
これを両方のsubとも直接 with form2---end with にて
setしたところうまくいくようになりました。解決しました。
長文の質問読んでいただいてありがとうございました。
お礼
kmeeさん ご回答ありがとうございました。結局removehandler/addhandlerを見よう見まねで入れて出ないようになりました。また1のsub間のdataについてはdim cform2 as new form2()が両方のsubに定義されていました。 これって別のformになっていたのではないかと思います。 これを両方のsubとも直接 with form2---end with にて setしたところうまくいくようになりました。解決しました。 長文の質問読んでいただいてありがとうございました。