
<Window x:Class="NetworkChange.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="网络状态监控" Height="300" Width="400"><StackPanel Margin="20"><TextBlock Text="连接列表:" FontWeight="Bold" Margin="0,0,0,10"/><ListBox x:Name="ConnectionListBox" Height="150" Margin="0,0,0,10"/><TextBlock x:Name="StatusText" Text="状态: 等待网络变化..." HorizontalAlignment="Center"/></StackPanel>
</Window>
using System;
using System.Collections.ObjectModel;
using System.Net.NetworkInformation;
using System.Windows;
using System.Windows.Threading;namespace NetworkChange
{public partial class MainWindow : Window{private ObservableCollection<string> connections = new ObservableCollection<string>();public MainWindow(){InitializeComponent();string originalString = "v_non_047-仪式结束 - 副本 (3).mp4";string result = originalString.Substring(6);ConnectionListBox.ItemsSource = connections;connections.Add("192.168.1.100 - 计算机A");connections.Add("192.168.1.101 - 计算机B");StartNetworkMonitoring();}private void StartNetworkMonitoring(){System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged += OnNetworkAvailabilityChanged;System.Net.NetworkInformation.NetworkChange.NetworkAddressChanged += OnNetworkAddressChanged;StatusText.Text = "状态: 正在监控网络...";}private void OnNetworkAvailabilityChanged(object sender, System.Net.NetworkInformation.NetworkAvailabilityEventArgs e){Dispatcher.Invoke(() =>{if (!e.IsAvailable){ClearConnections();StatusText.Text = "状态: 网络已断开 - " + DateTime.Now.ToString("HH:mm:ss");}else{StatusText.Text = "状态: 网络已恢复 - " + DateTime.Now.ToString("HH:mm:ss");}});}private void OnNetworkAddressChanged(object sender, EventArgs e){Dispatcher.Invoke(() =>{ClearConnections();StatusText.Text = "状态: 检测到网络切换 - " + DateTime.Now.ToString("HH:mm:ss");});}private void ClearConnections(){connections.Clear();connections.Add("连接列表已清空");}protected override void OnClosed(EventArgs e){System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged -= OnNetworkAvailabilityChanged;System.Net.NetworkInformation.NetworkChange.NetworkAddressChanged -= OnNetworkAddressChanged;base.OnClosed(e);}}
}