c#中如何对非模式对话框的设计

来源:百度知道 编辑:UC知道 时间:2024/05/28 01:58:48
我的代码是这样的
try
{
frModel.Show();
}
catch(Exception ex)
{
messageBox.Show(ex.message);

}
finally
{
frModel.Dispose();
}
我一运行 点击一下 那个弹出对话框 结果 一闪就过去了
我把那个finall 给去掉后
结果又变了 是出现那个对话框 但是我在 这个对话框设计的时候 把它的属性 Startposition 设置为 centerparient 可是谭出来的时候是在 左上上角
而我用 frmMode。showdialog();
则会出现在中间

另外还有一个问题 我想设计这样的功能
我一点击一个Model 它就弹出一个对话框 我点击另外一个Model的时候 再 弹出一个对话框 当我点击同一个Model的时候如果开已经弹出来 就把原来的那个显示在最前面 要是开始没有弹出 那就弹出一个新的 这个要如何来设计

1、Form1 f1 = new Form1();
  Thread th = new Thread(() => { f1.ShowDialog(); });
  th.Start();
  使用线程去显示child窗口就可以了。

  2、Thread th = new Thread(() => { Application.Run(new Form1()); });
  th.Start();也可以这样。
  在Form1里面弹出messageBox,mainForm依然可以用,Form1不能用。

模态对话框你不可能点击出来多个的,如果要非模态的,就在FormLoad里面去设置Location吧
要显示最前的话,就是这样,把frModel作为全局变量,然后在frMdel.Show的前面加上
try
{
frModel.Focus();
return;
}
catch{}

对话框的显示有两个函数,一个是.show();另一个是.showDialog();第一个函数是以非模态对话框的形式显示,调完后会执行下面的函,当然会执行frModel.Dispose();所以弹出之后自动消毁了。改为第二个就是模态对话框了。要手动关闭

有点糊涂