想实现一个非模式对话框,操作是位于主窗口,对话框只是为了显示进度,关键是要使主窗口不可选中,不可操作。不用多线程可以实现么?
如果建议把操作移到对话框就免了

解决方案 »

  1.   

    或者你可以限制
    在非模式对话框出现后
    只要选中主界面,就禁止操作,并提ACTIVE非模式对话框
      

  2.   

    你看这样行不,在对话框出来时,将主窗口的Enabled设置为false,当对话框关闭时,将主窗口的Enabled设置为truepublic Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                // Show对话框
                Form2 f = new Form2();
                f.Show();
                f.FormClosed += new FormClosedEventHandler(f_FormClosed);
                this.Enabled = false;
            }        void f_FormClosed(object sender, FormClosedEventArgs e)
            {
                this.Enabled = true;
            }
      

  3.   


    这个方法用过,不能控制窗口的上下位置,而且一些控件在Disable以后会很奇怪,比如Treeview会无法显示任何元素
      

  4.   

    遇到相同情况的了,我也在做类似的功能,以前在Delphi中有个DisableTaskWindows(),然后再EnableTaskWindows就行了,不知这两个函数在C#中有没有等效函数,录找中...