我通过互联网阅读文章,但我想我在这里遗漏了一些东西。我尝试按照 this SO question 的回答,但没有发生任何事情。
每当我按下Enter / Return键时,我都想触发usePort_Click方法。另外,每当我尝试从ports_Keydown方法调用它时,我不知道如何绕过usePort_Click的EventArgs参数。
注意:端口是一个ListBox控件。
private void usePort_Click(object sender, EventArgs e)
{
try
{
port = new SerialPort((string)ports.SelectedItem, 9600);
portUsedLabel.Text = (string)ports.SelectedItem;
String buffer = "";
String tellArduino = "food"; // test value
port.Open();
port.WriteLine(tellArduino);
for (int x = 0; x < tellArduino.Length; x++)
{
buffer += port.ReadLine();
}
ports.Items.Add(buffer);
port.Close();
}
catch { //stuff }
}
private void ports_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
//code here
}
}
答案 0 :(得分:0)
一个好的解决方案是将要执行的代码移动到一个单独的方法中(我称之为someStuff
,用更好的名称替换名称)并从两个事件处理程序中调用该方法:
private void usePort_Click(object sender, EventArgs e)
{
someStuff();
}
private void ports_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
someStuff();
}
}
private void someStuff()
{
try
{
port = new SerialPort((string)ports.SelectedItem, 9600);
portUsedLabel.Text = (string)ports.SelectedItem;
String buffer = "";
String tellArduino = "food"; // test value
port.Open();
port.WriteLine(tellArduino);
for (int x = 0; x < tellArduino.Length; x++)
{
buffer += port.ReadLine();
}
ports.Items.Add(buffer);
port.Close();
}
catch { //stuff }
}