Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何对键盘按钮进行编码以在两种模式之间切换?_C#_Silverlight_Silverlight 3.0 - Fatal编程技术网

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;}}欢呼。。