我发现了一个奇怪的ToolStripButton
双击问题。这些步骤将重现问题:
ToolStrip
。ToolStripButton
上添加ToolStrip
。OpenFileDialog
。ToolStripButton
的{{1}}事件。在Click
方法中添加:
toolStripButton1_Click
openFileDialog1.ShowDialog();
。这就是问题所在。首先,弹出一个打开的文件对话框,然后关闭它,然后弹出另一个对话框。这不应该发生。我再次关闭它,然后主窗体可能有一些重绘问题。最后,我关闭了主窗体,但程序仍在运行。
请自行尝试,如果发生这一切,请告诉我。
为什么会这样?我该怎么做才能解决它?
您可以使用它来重现问题:
ToolStripButton
答案 0 :(得分:1)
为什么会发生这种情况?
我真的不知道,这对我来说是一个惊喜!!
我该怎么做才能解决它?
这是一个简单的解决方法:
private bool clicked = false;
private void toolStripButton1_Click(object sender, EventArgs e)
{
if (clicked) return;
clicked = true;
openFileDialog1.ShowDialog();
clicked = false;
}
<强>编辑:强>
我认为问题不是双击本身,而是OpenFileDialog
行为
如果您尝试此代码,即使(意外)双击,错误也会消失:
private void toolStripButton1_Click(object sender, EventArgs e)
{
using (OpenFileDialog dlg = new OpenFileDialog()
{
Title = "Open file",
Filter = "PDF files|*.pdf|All files|*.*"
})
{
dlg.ShowDialog();
Debug.WriteLine(dlg.FileName);
}
}
如果您使用tsb1.DoubleClickEnabled = true
错误消失...但我不确定这是一个很好的解决方案
答案 1 :(得分:1)
我决定使用它(暂时):
private void toolStripButton1_Click(object sender, EventArgs e)
{
toolStripButton1.Enabled = false;
openFileDialog1.ShowDialog();
toolStripButton1.Enabled = true;
}