【问题标题】:Messagebox Click not working C#消息框单击不起作用 C#
【发布时间】:2015-04-20 10:19:29
【问题描述】:

我有一个如下所示的点击事件。单击时,消息框按预期显示...但是,单击消息框中的“确定”时,消息框不会关闭。单击消息框窗口中的“X”(关闭)按钮时,它会按预期关闭。

观察:如果将 MessageBox 放置在“For Loop”运行之前,则可以正常工作。

 private void Icon_Clicked(object sender, EventArgs e, Panel iconPanel)
  {
        if (iconPanel.Name == "Logout")
          {
             MessageBox.Show("Logout");
          }
  }

  public static List<String> ProjectDomains = new List<String>();
  ProjectDomains.Add("Logout");
  ProjectDomains.Add("Designers");
  ProjectDomains.Add("Animators");

foreach (var domain in ProjectDomains)
  {
        Panel iconPanel = new Panel();
        PictureBox iconPic = new PictureBox();
        Label iconlabel = new Label();

        iconPanel.Name = domain;
        iconPic.Name = domain;
        iconlabel.Name = domain;

        iconPanel.MouseEnter += new EventHandler((sender, e) => Icon_MouseEnter(sender, e, iconPanel));
        iconPanel.MouseLeave += new EventHandler((sender, e) => Icon_MouseLeave(sender, e, iconPanel));
        iconPic.MouseEnter += new EventHandler((sender, e) => Icon_MouseEnter(sender, e, iconPanel));
        iconPic.MouseLeave += new EventHandler((sender, e) => Icon_MouseLeave(sender, e, iconPanel));
        iconlabel.MouseEnter += new EventHandler((sender, e) => Icon_MouseEnter(sender, e, iconPanel));
        iconlabel.MouseLeave += new EventHandler((sender, e) => Icon_MouseLeave(sender, e, iconPanel));

        iconPanel.Click += new EventHandler((sender, e) => Icon_Clicked(sender, e, iconPanel));
        iconPic.Click += new EventHandler((sender, e) => Icon_Clicked(sender, e, iconPanel));
        iconlabel.Click += new EventHandler((sender, e) => Icon_Clicked(sender, e, iconPanel));
  }

【问题讨论】:

  • 我不习惯 C#,但在 JAVA 中,当我单击确认按钮(我使用弹出窗口)时,我总是使用 hide()
  • @SaintLike 应该已经内置在 C# 中的MessageBox
  • 消息框是 Windows 操作系统的一部分,因此如果它无法正常工作,则意味着您的系统存在根本问题。您确定代码没有陷入某种循环,单击“确定”后重新显示消息框吗?或者您可能已经调用(在您的代码中的其他地方)对干扰您的消息框的 DllImport("user32.dll") 方法? tbh:这是一件非常奇怪的事情。
  • @911Rapid 您的代码中是否有断点?另外,尝试隔离问题。注释掉 if 语句,看看 MessageBox 是否正确执行。在表单的其他地方尝试另一个 MessageBox,看看它是否有效。
  • @EyeSeeSharp 如果将 Messagebox 放在表单的 load 方法中,它可以正常工作。但是在这个点击事件中,它失败了

标签: c# dialog modal-dialog messagebox


【解决方案1】:

问题是因为在后台运行的计时器检查任务栏是否被调整大小。有一次,我停止了计时器..消息框正常工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    相关资源
    最近更新 更多