我正在做一个项目。我不会详细说明,但我会简化我的想法。我正在使用莫尔斯电码(点和短划线),我有两种方法:convert_MorseToChar()
和Convert_MorseTonum()
。在convert_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;
}
}
和另一个方法Convert_MorseToNum(),使用莫尔斯码的SAME组合,但将它们映射到数字:
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是:有2个文本框,一个用户将在其中编写莫尔斯代码,另一个用于输出。用户将从键盘上写下点.
和短划线-
并按Enter键,然后程序将转到2种方法中的一种来转换摩尔斯码。现在是什么告诉程序去哪里转换?
我的问题是:我想创建模式键以在两种模式之间切换:MorseToChar和MorseToNum。我希望向下箭头键像一个模式。当用户按下向下箭头时,程序将处于MorseToChar模式,只要用户输入程序直接使用方法convert_MorseToChar
转换为字符。当用户再次按下向下箭头时,程序将在此处切换到MorseToNum模式,当用户输入为morsecode时,程序将直接使用方法Convert_MorseToNum()
转换为数字。我怎么能这样做?
请原谅我的英语,英语不是我的母语:)
答案 0 :(得分:1)
您可以使用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 :(得分:0)
您可以使用每次按下所需键时都会切换的布尔值,如下所示:
bool NumericMode = false; // accessible to the Morse code methods
private void ToggleMode()
{
if(NumericMode)
NumericMode = false;
else
NumericMode = true;
}