2016-07-23 13 views
0

TextBoxにはLeaveイベントがあります。 TextBox.Leaveサブで
、私はMsgBoxを表示する場合は、変更を保存するためにユーザに尋ねるが、ために確認メッセージボックスを表示したいと思い、Button.Clickイベントは発生しません。テキストボックスに離脱イベントを発生させたコントロール(ボタンクリック)をキャッチ

TextBox.Leaveイベントの後、私の前の質問 Hereを参照してください)

だから私は、(TextBox.Leave Subに)クリックしてTextBox.Leaveイベントを発生させたボタンの名前(または別のrif)をキャッチするコードを挿入することを考えました。私は、クリックイベントを発生させることができるでしょう、ボタン名を持つ

DirectCast(Me.Controls("ButtonName"), Button).PerformClick() 

答えて

1

ではなく、イベントを呼び出すには、コードのより良いを整理するためのメソッドを使用することができます。そのようにコードを呼び出す際の問題の1つは、遅かれ早かれ、ユーザーやコードによってどのように呼び出されたかを知りたいということです。

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click 
    ' arguably, if the user clicks a save button, 
    ' you dont ask them 
    SaveMyStuff() 
End Sub 

Private Sub TextBox1_Leave(sender As Object, e As EventArgs) Handles TextBox1.Leave 
    If QueryUserSave("Customer") Then 
     SaveMyStuff() 
    End If 
End Sub 
Private Function QueryUserSave(whereMsg As String) As Boolean 
    Dim dlgR As DialogResult 
    Dim msg = String.Format("Some stuff has changed in {0}. Save it now?", whereMsg) 

    dlgR = MessageBox.Show(msg, "Sorry to bother you...", MessageBoxButtons.YesNo) 

    Return dlgR = Windows.Forms.DialogResult.Yes 
End Function 

Private Sub SaveMyStuff() 
    '... 
End Sub 

1つのことを行うメソッド(イベントを含む)を書き込む場合、それらを他のメソッドからリンクして何度も繰り返し使用できます。

+0

あなたのソリューションは常に良いです:) – genespos

0
Dim CtrlName As String = Me.ActiveControl.Name 
関連する問題