【发布时间】:2012-08-14 20:23:37
【问题描述】:
我创建了一个计时器类,用于监控软件的许可证。当发生错误时,我调用 ShowDialog() 来显示我的自定义窗口窗体。我的问题是如何禁用父窗口?这是我的问题的一个简单示例。正如您所看到的,一旦 MessageBox 弹出,您仍然可以在 MainForm 窗口中输入。
MainForm1.cs 文件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TestProject
{
public partial class MainForm1 : Form
{
public MainForm1()
{
InitializeComponent();
}
private void MainForm1_Load(object sender, EventArgs e)
{
TimerClass1 timer = new TimerClass1();
}
}
}
MessageBox.cs 文件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TestProject
{
public partial class MessageBox : Form
{
public MessageBox()
{
InitializeComponent();
this.label1.Text = "Hello There";
this.button1.Text = "OK";
this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;
}
}
}
TimerClass1.cs 文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
using System.Windows;
namespace TestProject
{
class TimerClass1
{
Timer _timer;
public TimerClass1()
{
_timer = new Timer(1);
_timer.Elapsed +=new ElapsedEventHandler(_timer_Elapsed);
_timer.Enabled = true;
}
private void _timer_Elapsed(object sender, ElapsedEventArgs e)
{
_timer.Stop();
MessageBox msg = new MessageBox();
msg.ShowDialog();
_timer.Start();
}
}
}
【问题讨论】:
-
仅仅通过阅读这段代码,我会说主窗口应该是无响应的。但是制作你自己的 MessageBox 类是令人困惑的事情。
-
另外,为什么定时器调用消息框?如果你想让 showdialog 工作,应该从主窗体调用它。
标签: c# wpf window showdialog