注意:ここで紹介している方法は、.NET Framework 2.0以降でのみ有効です。
ネットワークインターフェイスのIPアドレスが変更されると、NetworkChangeクラスのNetworkAddressChangedイベントが発生します。なお、NetworkAddressChangedイベントハンドラはメインスレッドとは別のスレッドで呼び出されるため、このイベントハンドラからコントロールにアクセスするには、Invokeメソッドを使用する必要があります。
以下に例を示します。この例では、ネットワークインターフェイスのIPアドレスが変更されたときにフォームのタイトルバーにメッセージを表示しています。このコードはフォームクラス(Form1クラス)に記述されているものとします。
'フォームのLoadイベントハンドラ Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As EventArgs) Handles MyBase.Load 'NetworkAddressChangedイベントハンドラの追加 AddHandler _ System.Net.NetworkInformation.NetworkChange.NetworkAddressChanged, _ AddressOf NetworkChange_NetworkAddressChanged End Sub 'ネットワークインターフェイスのIPアドレスが変更された Private Sub NetworkChange_NetworkAddressChanged( _ ByVal sender As Object, ByVal e As EventArgs) 'Invokeが必要か確認し、必要であればInvokeを呼び出す If Me.InvokeRequired Then Dim dlgt As New _ System.Net.NetworkInformation.NetworkAddressChangedEventHandler( _ AddressOf NetworkChange_NetworkAddressChanged) Me.Invoke(dlgt, New Object() {sender, e}) Return End If Me.Text = "ネットワークインターフェイスのIPアドレスが変更されました:" + _ DateTime.Now.ToString() End Sub
//フォームのLoadイベントハンドラ private void Form1_Load(object sender, EventArgs e) { //NetworkAddressChangedイベントハンドラの追加 System.Net.NetworkInformation.NetworkChange.NetworkAddressChanged += new System.Net.NetworkInformation.NetworkAddressChangedEventHandler( NetworkChange_NetworkAddressChanged); } //ネットワークインターフェイスのIPアドレスが変更された private void NetworkChange_NetworkAddressChanged(object sender, EventArgs e) { //Invokeが必要か確認し、必要であればInvokeを呼び出す if (this.InvokeRequired) { System.Net.NetworkInformation.NetworkAddressChangedEventHandler dlgt = new System.Net.NetworkInformation.NetworkAddressChangedEventHandler( NetworkChange_NetworkAddressChanged); this.Invoke(dlgt, new object[] { sender, e }); return; } this.Text = "ネットワークインターフェイスのIPアドレスが変更されました:" + DateTime.Now.ToString(); }