Я нашел странную проблему с двойным щелчком ToolStripButton
. Эти шаги приведут к возникновению проблемы:Strange ToolStripButton Нажмите, чтобы открыть поведение OpenFileDialog
- Создание приложения для 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());
}
}
}
Вы используете 'Click' событие ToolStripButton, которая отвечает на * одним нажатием кнопки *, то почему вы * двойной щелчок * на нем? – Coder
Я дважды щелкнул его случайно, и я нашел эту проблему.Я имею в виду, если кто-то дважды нажимает кнопку, это не должно вызывать проблемы, верно? – EFanZh
Да, но это не объясняет, почему приложение все еще работает, когда OP закрывает его (это случается, я пытался) – Marco