저는 C# 및 WPF 프로그래밍을 처음 접했을 뿐이므로이 문제로 인해 두통이 생깁니다.WPF 단추를 IConnectionPoint 이벤트 처리기 내에서 볼 수 있도록 설정하십시오.
프로그램이 수행해야하는 것 : 고객이 그의 이름을 입력 할 수있는 텍스트 상자가있는 시작 화면이 표시됩니다. 장치가 무선 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" />
이
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_);
}
그리고 마지막으로하여 MainWindow.xaml.cs를 내 이벤트 핸들러 등록은 다음과 같습니다
이 버튼 요소입니다 이벤트 처리기 :
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