【发布时间】: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