我對C#和WPF編程相當陌生,現在這個問題讓我頭疼。設置一個WPF按鈕在IConnectionPoint事件處理程序中可見
該程序應該做什麼:該程序顯示一個帶有文本框的歡迎屏幕,客戶可在其中輸入他的名字。 如果設備靠近無線局域網接入點並連接成功,則應在主窗口上顯示「開始」按鈕。
什麼不工作:設置事件處理程序中的按鈕可見性。新風格不適用。此外,如果我在設置可見性屬性/屬性(?)後嘗試調用任何其他代碼,它將不會運行(如果在設置visib之前放置MessageBox.Show,它將顯示,如果我在設置後該屬性,這個代碼甚至不會達到任何更多)。
的代碼:
這是按鈕元素:
<Button Height="72" HorizontalAlignment="Center" Margin="319,507,315,0"
Name="buttonStart" VerticalAlignment="Top" Width="168" FontSize="32"
Content="Los geht's" Click="buttonStart_Click" />
這是MainWindow.xaml.cs內的事件處理程序登記
public partial class MainWindow : Window, INetworkListManagerEvents
{
private INetworkListManager nlm_;
private IConnectionPoint nlmICP_;
private int nlmCookie_ = 0;
private void InitNetManager()
{
nlm_ = new NetworkListManager();
IConnectionPointContainer icpc = (IConnectionPointContainer)nlm_;
Guid tempGuide = typeof(INetworkListManagerEvents).GUID;
icpc.FindConnectionPoint(ref tempGuide, out nlmICP_);
nlmICP_.Advise(this, out nlmCookie_);
}
最後,事件處理程序:
public void ConnectivityChanged(NLM_CONNECTIVITY newConnectivity)
{
if (newConnectivity == NLM_CONNECTIVITY.NLM_CONNECTIVITY_DISCONNECTED ||
((int)newConnectivity & (int)NLM_CONNECTIVITY.NLM_CONNECTIVITY_IPV4_NOTRAFFIC) != 0)
{
MessageBox.Show("Disconnected"); // this will code is reached
buttonStart.Visibility = Visibility.Hidden; // this is not getting applied
MessageBox.Show("Disconnected"); // this will code is not reached (stepped with debugger)
}
if ((((int)newConnectivity & (int)NLM_CONNECTIVITY.NLM_CONNECTIVITY_IPV4_LOCALNETWORK) != 0) ||
(((int)newConnectivity & (int)NLM_CONNECTIVITY.NLM_CONNECTIVITY_IPV4_INTERNET) != 0))
{
MessageBox.Show("Connected"); // see comments above
buttonStart.Visibility = Visibility.Visible;
}
}
就是這樣 - 我希望你能幫助我。
非常感謝您的努力!
+1用於提供答案 – Marcote 2011-03-19 01:00:54