gpt4 book ai didi

c# - 有没有办法假装来自切换按钮的 handleCheck 从未发生过?

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:26 25 4
gpt4 key购买 nike

我正在开发一个程序,它通过 SSH 将我的客户端连接到服务器。我正在为 wpf 中的连接/断开功能使用切换按钮。我想这样实现,当我按下切换按钮但连接失败时,该按钮应返回其原始状态“未选中”。

我用 toggle_btn.IsChecked = false; 试过了,这会将按钮设置为未按下的状态。但是它仍然运行代码,就好像我未选中它一样,这是我不想要的。我只是想让按钮假装什么都没发生,这样用户就可以验证他的密码并重试。

 private void HandleCheck(object sender, RoutedEventArgs e)
{
//connection to the ssh client
if (capt.Connect(str.Split(';')[0], 22, str.Split(';')[1],
str.Split(';')[2]) == false)
{
btn_con.IsChecked = false;
}

}

如果我使用 .IsChecked,它会运行包含在 HandleUnchecked 函数中的代码。但是你不能断开从未连接过的东西,这就是它抛出异常的原因。我可以捕获此异常,但我想知道是否有更好的方法来阻止代码执行。


private void HandleUnchecked(object sender, RoutedEventArgs e)
{
capt.DisconnectSSH();
}

最佳答案

我认为您可以删除并添加 Uncheck 事件。并延迟在 GUI 中反转事件。

private void ToggleButton_Checked(object sender, RoutedEventArgs e)
{
// IF condition
{
Task.Run(() =>
{
Thread.Sleep(500);
Dispatcher.Invoke(() =>
{
tgButton.Unchecked -= tgButton_Unchecked;
tgButton.IsChecked = false;
});
}).
ContinueWith((tsk) =>
{
tgButton.Unchecked += tgButton_Unchecked;
});
}
}

关于c# - 有没有办法假装来自切换按钮的 handleCheck 从未发生过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55608759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com