C# 如何对键盘按钮进行编码以在两种模式之间切换?
我在做一个项目。我不打算详述细节,但我会简化我的想法。我使用莫尔斯电码(点和破折号),我有两种方法:C# 如何对键盘按钮进行编码以在两种模式之间切换?,c#,silverlight,silverlight-3.0,C#,Silverlight,Silverlight 3.0,我在做一个项目。我不打算详述细节,但我会简化我的想法。我使用莫尔斯电码(点和破折号),我有两种方法:convert\u MorseToChar()和convert\u MorseTonum()。在convert\u MorseToChar()方法中有一个开关,用于比较用户输入的莫尔斯码,并将其映射到字符: private String convert_MorseToChar(ref string Ch) { switch (Ch) { Case
convert\u MorseToChar()
和convert\u MorseTonum()
。在convert\u MorseToChar()
方法中有一个开关,用于比较用户输入的莫尔斯码,并将其映射到字符:
private String convert_MorseToChar(ref string Ch)
{
switch (Ch)
{
Case ".-":
MorsetoChar = "a"
break;
Case "-...":
MorsetoChar = "b"
break;
Case "-.-.":
MorsetoChar = "c"
break;
Case "-..":
MorsetoChar = "d"
break;
Case ".":
MorsetoChar = "e"
break;
}
}
另一种方法convertu MorseToNum(),使用相同的摩尔斯电码组合,但将它们映射到数字:
private String Convert_MorseToNum(ref string Ch)
{
switch (Ch)
{
Case ".-":
MorsetoChar = "1"
break;
Case "-...":
MorsetoChar = "2"
break;
Case "-.-.":
MorsetoChar = "3"
break;
Case "-..":
MorsetoChar = "4"
break;
Case ".":
MorsetoChar = "5"
break;
}
}
现在senario是:有两个文本框,一个用户将在其中写入摩尔斯电码,另一个用于输出。用户将从键盘写入点
和破折号-
,然后按Enter键,程序将转到两种方法之一转换莫尔斯电码。现在是什么告诉程序去哪里转换
我的问题是:我想创建模式键来在两种模式之间切换:MorseToChar和MorseToNum。我希望向下箭头键像模式一样工作。当用户按下向下箭头时,程序将处于MorseToChar模式,每当用户直接输入程序时,使用方法convert\u MorseToChar
转换为字符。当用户再次按下向下箭头时,当用户输入morsecode时,程序将切换到MorseToNum模式,程序将直接使用方法Convert\u MorseToNum()
转换为数字。我该怎么做
请原谅我的英语,英语不是我的母语:)您可以使用一个布尔值,每次按下所需的键时都会进行切换,如下所示:
bool NumericMode = false; // accessible to the Morse code methods
private void ToggleMode()
{
if(NumericMode)
NumericMode = false;
else
NumericMode = true;
}
您可以使用一个布尔值,该布尔值在每次按下所需键时进行切换,如下所示:
bool NumericMode = false; // accessible to the Morse code methods
private void ToggleMode()
{
if(NumericMode)
NumericMode = false;
else
NumericMode = true;
}
您可以使用KeyDown事件。如果按下的键是向下箭头,则可以切换模式:
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
// Determine whether the keystroke is the down arrow.
if (e.KeyCode == Keys.Down)
{
charMode = !charMode;
}
}
当然,您必须将charMode定义为bool
。当调用转换方法时,您将检查其值
private String Convert_Morse(ref string Ch)
{
if (charMode) return convert_MorseToChar(Ch)
else
return convert_MorseToNum(Ch);
}
您可以使用KeyDown事件。如果按下的键是向下箭头,则可以切换模式:
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
// Determine whether the keystroke is the down arrow.
if (e.KeyCode == Keys.Down)
{
charMode = !charMode;
}
}
当然,您必须将charMode定义为bool
。当调用转换方法时,您将检查其值
private String Convert_Morse(ref string Ch)
{
if (charMode) return convert_MorseToChar(Ch)
else
return convert_MorseToNum(Ch);
}
-1表示在问题中不必要的哭泣。标题+1表示问题和JYelton,以平衡力量。标题被编辑,所以我收回我的投票!:P-1表示在问题中不必要的哭泣。标题+1,对问题和JYelton,以平衡力量。标题被编辑,所以我收回我的投票!:POr:NumericMode=!数字模式;或者:NumericMode=!数字模式;非常感谢。这是我所需要的,但有一点不同。如何对该键盘事件进行编码,以便焦点在何处,以及用户在键盘上单击向下箭头时,将捕获keydown事件并切换布尔变量?在同一页中,我有一个文本框,并与之关联一个keyUp事件。谢谢我用Application.Current.RootVisual.KeyDown+=Main\u KeyDown解决了这个问题;private void Main_KeyDown(object sender,System.Windows.Forms.KeyEventArgs e){//确定击键是否为向下箭头。如果(e.KeyCode==Keys.down){charMode=!charMode;}}干杯..谢谢!这是我所需要的,但有一点不同。如何对该键盘事件进行编码,以便焦点在何处,以及用户在键盘上单击向下箭头时,将捕获keydown事件并切换布尔变量?在同一页中,我有一个文本框,并与之关联一个keyUp事件。谢谢我用Application.Current.RootVisual.KeyDown+=Main\u KeyDown解决了这个问题;private void Main_KeyDown(对象发送方,System.Windows.Forms.KeyEventArgs e){//确定击键是否为向下箭头。如果(e.KeyCode==Keys.down){charMode=!charMode;}}欢呼。。