Ich fand ein seltsames ToolStripButton
Doppelklick-Problem. Mit diesen Schritten wird das Problem reproduziert:Seltsame ToolStripButton klicken, um ein OpenFileDialog-Verhalten zu öffnen
- Erstellen Sie eine Windows Form Application.
- Fügen Sie eine auf dem Hauptformular hinzu.
- Fügen Sie eine
ToolStripButton
auf derToolStrip
hinzu. - Fügen Sie eine
OpenFileDialog
auf dem Hauptformular hinzu. - Doppelklicken Sie auf das
ToolStripButton
Click
Ereignis in der Eigenschaft-Toolbox. Fügen Sie diese in
toolStripButton1_Click
Methode:openFileDialog1.ShowDialog();
- Debug starten.
- Doppelklicken Sie schnell auf die
ToolStripButton
.
Hier kommt das Problem. Zuerst erscheint ein geöffneter Dateidialog und ich schließe ihn, dann erscheint ein weiterer Dialog. Dies sollte nicht passieren. Ich schließe es wieder, dann könnte das Hauptformular ein Problem mit dem Neuzeichnen haben. Schließlich schließe ich das Hauptformular, aber das Programm läuft noch.
Bitte versuchen Sie es selbst und lassen Sie mich wissen, wenn all dies passiert.
Warum passiert das? Was soll ich tun, um es zu lösen?
diese Weise können Sie das Problem zu reproduzieren:
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());
}
}
}
Du Toolstripbutton des 'Click' Ereignis verwenden, die einzigen Klick * * warum bist du dann * Doppelklick * auf sie reagiert? – Coder
Ich habe es versehentlich angeklickt, dann habe ich dieses Problem gefunden.Ich meine, wenn jemand auf den Button doppelklickt, sollte es kein Problem verursachen, oder? – EFanZh
Ja, aber das erklärt nicht, warum App immer noch läuft, wenn OP es schließt (es passiert, ich habe es versucht) – Marco