Я обнаружил странную ToolStripButton
проблему двойного щелчка. Эти шаги воспроизведут проблему:
- Создание приложения Windows Form.
- Добавьте
ToolStrip
в основную форму.
- Добавьте
ToolStripButton
к ToolStrip
.
- Добавьте
OpenFileDialog
в основную форму.
- Дважды щелкните событие
ToolStripButton
Click
на панели инструментов свойств.
Добавьте это в toolStripButton1_Click
метод:
openFileDialog1.ShowDialog();
- Начать отладку.
- Быстро дважды щелкните
ToolStripButton
.
Здесь возникает проблема. Сначала появляется диалоговое окно с открытым файлом, и я закрываю его, затем появляется другое диалоговое окно. Этого не должно быть. Я закрываю это снова, тогда главная форма может иметь некоторую проблему перерисовки. Наконец, я закрываю основную форму, но программа все еще работает.
Пожалуйста, попробуйте сами и дайте мне знать, если все это произойдет.
Почему это происходит? Что я должен сделать, чтобы решить это?
Вы можете использовать это, чтобы воспроизвести проблему:
using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace WinForm
{
class MyForm : Form
{
private IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
openFileDialog1 = new OpenFileDialog();
toolStrip1 = new ToolStrip();
toolStripButton1 = new ToolStripButton();
toolStrip1.SuspendLayout();
this.SuspendLayout();
toolStrip1.Items.AddRange(new ToolStripItem[] { toolStripButton1 });
toolStripButton1.Text = "toolStripButton1";
toolStripButton1.Click += new EventHandler(toolStripButton1_Click);
this.Controls.Add(toolStrip1);
toolStrip1.ResumeLayout(false);
toolStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
private OpenFileDialog openFileDialog1;
private ToolStrip toolStrip1;
private ToolStripButton toolStripButton1;
public MyForm()
{
InitializeComponent();
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyForm());
}
}
}