私は C# と WPF プログラミングにかなり慣れていませんが、現在、この問題が頭を悩ませています。
プログラムの実行内容:プログラムは、顧客が自分の名前を入力できるテキスト ボックスのあるウェルカム画面を表示します。デバイスがワイヤレス LAN アクセス ポイントに近づき、正常に接続されると、このメイン ウィンドウの [開始] ボタンが表示されるはずです。
何が機能していないか:イベント ハンドラー内でボタンの可視性を設定しています。新しいスタイルは適用されません。さらに、可視性属性/プロパティ(?)を設定した後に他のコードを呼び出そうとすると、実行されません(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;
}
}
それだけです - あなたが私を助けてくれることを願っています。
どうぞよろしくお願いいたします。