在c#-wpf中切换状态
当我按下一个键时,我想让一个功能在切换模式下工作,但我真的不知道怎么做。我尝试了很多方法,只有“RegisterHotKey”方法可以正常工作。但是“RegisterHotKey”正在覆盖游戏中映射的密钥,这不是我需要的。所以我尝试使用“GetKeyState”。下面的代码无论我做了什么改变,都只适用于一个职位…:在c#-wpf中切换状态,c#,wpf,toggle,state,C#,Wpf,Toggle,State,当我按下一个键时,我想让一个功能在切换模式下工作,但我真的不知道怎么做。我尝试了很多方法,只有“RegisterHotKey”方法可以正常工作。但是“RegisterHotKey”正在覆盖游戏中映射的密钥,这不是我需要的。所以我尝试使用“GetKeyState”。下面的代码无论我做了什么改变,都只适用于一个职位…: private void mw_KeyDown(object sender, KeyEventArgs e){ bool sw = (toggle = !toggle);
private void mw_KeyDown(object sender, KeyEventArgs e){
bool sw = (toggle = !toggle);
int tog = (GetKeyState(Key.Tab));
if ((tog & 1) == 1)
{
if (sw)
{
System.Windows.MessageBox.Show("go to second position...!");
}
}
else
{
System.Windows.MessageBox.Show("go to first position...!");
}
}
有什么想法或建议我怎么做
谢谢,解决方案由CodeProject的Sergey Alexandrovich Kryukov提供 链接:
您可以将bool声明为表示其状态的类成员变量。更新切换键down中的值我有这个,但仍然不工作:public partial class main Window:Window{private bool toggle=false;}我在视图中使用了一个ToggleButton,并在视图模型中将'IsChecked'属性绑定到一个布尔值,您可以使用相同的概念将隐喻转换为键击。我不会在事件处理程序中使用消息框,因为它们会破坏键盘焦点!我无法修复这里的代码缩进…如果其他人可以…谢谢。
public partial class MainWindow : Window
{
bool toggle;
public MainWindow()
{
InitializeComponent();
MainWindow.KeyDown += (sender, eventArgs) => { if (eventArgs.Key == Key.F7) toggle = !toggle; };
}
private void MainWindow_KeyDown(object sender, EventArgs e)
{
if (toggle)
{
//System.Windows.MessageBox.Show("go to second position...!");
}
else
{
//System.Windows.MessageBox.Show("go to first position...!");
}
}
}