我正在寻找一种方法来阻止我的代码,直到运行事件处理程序。
我的代码如下:
private void extendBt_Click(object sender, EventArgs e)
{
DisplayPrompt("Select a Construction line (L) or Two point (P) to extend");
// I want this code is blocked here, then user must press on P or L to continue
this.KeyPress += new KeyPressEventHandler(keypressed);
if (key == "p")
{
// Method "P";
}
if (key == "l")
{
// Method "L";
}
else // If L or P aren't pressed => How to return to the select event on keyboard ?
}
答案 0 :(得分:0)
这似乎是基于KeyPressEventHandler
的基于Windows窗体的应用程序。
从用户界面设计POV,表单应该有RadioButton
或Combobox
,以便用户可以进行选择。在此之前,请禁用扩展按钮。
如果你想坚持这种方式,你需要创建另一个表单并将选择控件放在那里。在按钮上单击,使用ShowDialog
显示CustomForm,并在用户选择的基础上,将DialogResult
返回到主窗体。您可以为P / L选择是/否,然后相应处理。
您根本不需要KeyPressEventHandler
。
答案 1 :(得分:-1)
嗯,如果没有按下,你不需要禁用事件,因为什么都不会发生。
但如果您想要禁用它,请使用以下代码:
private void extendBt_Click(object sender, EventArgs e)
{
DisplayPrompt("Select a Construction line (L) or Two point (P) to extend");
// I want this code is blocked here, then user must press on P or L to continue
this.KeyPress += new KeyPressEventHandler(keypressed);
if (key == "p")
{
// Method "P";
}
if (key == "l")
{
// Method "L";
}
else
{
this.KeyPress -= new KeyPressEventHandler(keypressed);
}
}