アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (1件)

ちょっと確認していませんが


> .Radio_btn1.Checked = True  ’ここへくるとbuttonのeventが発生,

イベントは節制しますが、実際に対応するルーチンが実行されるのは、このSubを抜けた後だったように思います。
デバッガでステップ実行したらどうなってますか?
    • good
    • 0
この回答へのお礼

kmeeさん
 ご回答ありがとうございました。結局removehandler/addhandlerを見よう見まねで入れて出ないようになりました。また1のsub間のdataについてはdim cform2 as new form2()が両方のsubに定義されていました。
これって別のformになっていたのではないかと思います。
これを両方のsubとも直接 with form2---end with にて
setしたところうまくいくようになりました。解決しました。
長文の質問読んでいただいてありがとうございました。

お礼日時:2014/07/04 09:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!