社員ブログ
HOME  社員ブログ
ホーム > .NET, VB, VB.NET, 社員:モンク, 開発言語, 雑記 > .net修行中24(なにかしら変更したことのハンドリング)

.net修行中24(なにかしら変更したことのハンドリング)

2013年07月3日 9時16分58秒

こんにちは、モンクです。

以前(.net修行中15)で紹介したように、vb.netでは、複数のイベントを一つのメソッドに関連付けることができます。

これを利用して「画面に何らかの入力があったら登録するかメッセージを出し、なければそのまま画面を閉じる or 画面遷移」ということをやってみました。

<br />
Public Class Class1</p>
<p>    Private isChanged As Boolean = False</p>
<p>    ''' &lt;summary&gt;<br />
    ''' メッセージを出すためのイベント捕捉とフラグ操作<br />
    ''' &lt;/summary&gt;<br />
    ''' &lt;param name=&quot;sender&quot;&gt;&lt;/param&gt;<br />
    ''' &lt;param name=&quot;e&quot;&gt;&lt;/param&gt;<br />
    ''' &lt;remarks&gt;&lt;/remarks&gt;<br />
    Private Sub somethingChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged, _<br />
                                                                                   DateTimePicker.ValueChanged, _<br />
                                                                                   CheckBox1.CheckedChanged, _<br />
                                                                                   DataGridView1.CellValueChanged<br />
        isChanged = True</p>
<p>    End Sub</p>
<p>    ''' &lt;summary&gt;<br />
    ''' なにか値が変わってたら、画面を閉じるときor画面遷移時にメッセージを出す<br />
    ''' &lt;/summary&gt;<br />
    ''' &lt;param name=&quot;sender&quot;&gt;&lt;/param&gt;<br />
    ''' &lt;param name=&quot;e&quot;&gt;&lt;/param&gt;<br />
    ''' &lt;remarks&gt;&lt;/remarks&gt;<br />
    Private Sub btnClick(sender As Object, e As EventArgs) Handles btnShowNewScr.Click,btnClose</p>
<p>        Dim btn As Button = CType(sender, Button)</p>
<p>        If isChanged Then<br />
            If MessageBox.Show(&quot;登録しますか&quot;, &quot;&quot;, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then<br />
                '** 登録処理<br />
                Call execInsert()<br />
				'** フラグリセット<br />
                isChanged As Boolean = False<br />
            Else<br />
                Exit Sub<br />
            End If<br />
        End If</p>
<p>        If btn.Name = &quot;btnShowNewScr&quot; Then<br />
            Dim f As Form = New Form    '** &lt;= Formは実際の画面のクラス名を表す<br />
            f.Show(Me)<br />
            f.Dispose()<br />
        Else<br />
            Me.Dispose()<br />
        End If</p>
<p>    End Sub</p>
<p>End Class<br />


言うまでもありませんが、somethingChangedで捕捉するイベントは、パラメータの型が一致していないと、一括で捕捉ができませんのでご注意を。
*somethingChangedで捕捉しているイベントのパラメータはすべて Object,EventArgs です。

.NET, VB, VB.NET, 社員:モンク, 開発言語, 雑記

  1. コメントはまだありません
  1. トラックバックはまだありません