【问题标题】:C# Winforms App requires two clicks on Button_Click EventC# Winforms App 需要两次点击 Button_Click 事件
【发布时间】:2017-02-07 21:54:10
【问题描述】:

该按钮需要单击两次才能触发事件。这是一个图像和代码。有一个组合框可以触发带有不同项目的按钮,但是当我单击该按钮以在页面上的面板中显示一个项目时,我必须单击它两次才能触发事件。通过两次单击选择一个项目后,每次单击它都可以单击一次,就像它应该的那样。

Here is the image of the combobox which triggers the button

还有代码:

namespace Carbon
{
public partial class ucAnaliza : MetroFramework.Controls.MetroUserControl
{

    static ucAnaliza _instance;

    public static ucAnaliza Instance3
    {
        get
        {
            if (_instance == null)
                _instance = new ucAnaliza();
            return _instance;
        }
    }

    public MetroFramework.Controls.MetroPanel MetroAnaliza
    {
        get { return mPanelAnaliza; }
        set { mPanelAnaliza = value; }
    }

    public ucAnaliza()
    {
        InitializeComponent();
    }

    private void ucAnaliza_Load(object sender, EventArgs e)
    {

    }

    private void mPotvrdiElementi_Click(object sender, EventArgs e)
    {
        switch (((ComboBox)mDropAnaliza).SelectedItem.ToString())
        {
            case "Главна рамка":
                _instance = this;
                ucGlavna uc = new ucGlavna();
                uc.Dock = DockStyle.Bottom;
                mPanelAnaliza.Controls.Add(uc);
                break;

            case "Челна рамка":
                _instance = this;
                ucCelna uc2 = new ucCelna();
                uc2.Dock = DockStyle.Bottom;
                mPanelAnaliza.Controls.Add(uc2);
                break;

            case "Подолжна рамка":
                _instance = this;
                ucPodolzna uc3 = new ucPodolzna();
                uc3.Dock = DockStyle.Bottom;
                mPanelAnaliza.Controls.Add(uc3);
                break;
        }
        }
}

}

这是按钮设计器的代码:

        // mPotvrdiElementi
        // 
        this.mPotvrdiElementi.BackColor = System.Drawing.Color.Transparent;
        this.mPotvrdiElementi.CausesValidation = false;
        this.mPotvrdiElementi.Cursor = System.Windows.Forms.Cursors.Hand;
        this.mPotvrdiElementi.ForeColor = System.Drawing.SystemColors.MenuBar;
        this.mPotvrdiElementi.Image = global::Carbon.Properties.Resources.Checked_Checkbox_24px;
        this.mPotvrdiElementi.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
        this.mPotvrdiElementi.ImageSize = 24;
        this.mPotvrdiElementi.Location = new System.Drawing.Point(758, 34);
        this.mPotvrdiElementi.Name = "mPotvrdiElementi";
        this.mPotvrdiElementi.Size = new System.Drawing.Size(80, 25);
        this.mPotvrdiElementi.Style = MetroFramework.MetroColorStyle.Orange;
        this.mPotvrdiElementi.TabIndex = 4;
        this.mPotvrdiElementi.TabStop = false;
        this.mPotvrdiElementi.Text = "Потврди";
        this.mPotvrdiElementi.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
        this.mPotvrdiElementi.UseCustomBackColor = true;
        this.mPotvrdiElementi.UseCustomForeColor = true;
        this.mPotvrdiElementi.UseSelectable = true;
        this.mPotvrdiElementi.UseStyleColors = true;
        this.mPotvrdiElementi.Click += new System.EventHandler(this.mPotvrdiElementi_Click);

【问题讨论】:

  • 是否有从mPanelAnaliza 中删除控件的代码?因为到目前为止,您似乎只是在每次调用 mPotvrdiElementi_Click 时为其添加更多控件,我认为如果您发布一个完整的问题示例,如果您可以制作适合的项目的较小版本,这将有所帮助到一个文件中并重现问题...
  • 也许您可以用一些相关的设计器代码替换控件的图像?甚至是事件窗口的屏幕截图?那张照片不是很有帮助...
  • 没有从 mPanelAnaliza 中删除控件的代码,这是该 UserControl 的全部代码。

标签: c# winforms events onclick click


【解决方案1】:

我知道这是很久以前的事了,但我遇到了同样的问题...... 但我找到了问题的解决方案,并且每次都在工作,并且不会破坏可用性。

private int focusFlag = 0;

private void MainForm_MouseEnter(object sender, EventArgs e)
{
     if (focusFlag < 1)
     {
         this.FocusMe();
         ++focusFlag;
     }
}

当尝试转到其他表单或其他内容时,它不会总是尝试专注于该表单,它只会专注一次就足够了......之后它会正常运行:) 似乎只有在您在表单中单击时 MetroForm 才会获得焦点,这只是 MetroFramework 开发人员在表单中使用某些 Metro 控件时的一个错误。

我看到其他人在使用 MetroFramework 时发布了同样的问题。

希望这会有所帮助。

【讨论】:

  • 因为调用 FocusMe() 一次似乎可以永远修复它,所以我检查了一下,你可以把 FocusMe();在 MetroForm 构造函数的末尾,问题就消失了。
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2020-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 2012-02-25
相关资源
最近更新 更多