现在有3个Form Form1,Form2,Form3
Form1 下有如下代码
Form1 form1 = new Form1();
Form2 form2 = new Form2();
Form3 form3 = new Form3();
form1 = this;
在Form2,Form3 的Load中也有也有Form1.form2 = this; 
Form1.form3=this;现在在Form1 和Form2 各加入一个BUTTON
Form1中Button1事件为
form2.ShowDialog();在Form2中Button2事件为
Form1.form2.hide();
Form1.form3.ShowDialog();此时Form3打开,Form2 会隐藏掉,而且Form1会被自动后置到当前你在桌面中打开的所有窗口的最后方.
请问如何不让Form1后置到所有页面的最后方?
P.s.在百度知道问了一下,有人叫我用
Topmost=true
可是虽然临时设定了form1的Topmost属性为True,但依然自动后置了...百思不得其解

解决方案 »

  1.   

    能把问题说的在清楚点吗,最好能把代码copy上来,Form1.form2 = this; 这句话是怎么写的,你那能编译过吗?
      

  2.   

    好的你等等Form1代码
    public partial class Form1 : Form
        {
            public static Form1 form1 = new Form1();
            public static Form2 form2 = new Form2();
            public static Form3 form3 = new Form3();
            public Form1()
            {
                InitializeComponent();
                form1 = this;
            }        private void button1_Click(object sender, EventArgs e)
            {
                form2.ShowDialog();
            }    }Form2
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
                Form1.form2 = this;
            }        private void button1_Click(object sender, EventArgs e)
            {
                Form1.form2.Hide();
                Form1.form3.ShowDialog();
            }
        }Form3
            public Form3()
            {
                InitializeComponent();
                Form1.form3 = this;
            }
      

  3.   

    我给你简单写了个,你参考一下,不一定非要用Form.Hide()Form1:
            private void button1_Click(object sender, EventArgs e)
            {
                new Form2().ShowDialog();
            }Form2:
            private void button1_Click(object sender, EventArgs e)
            {
                //this.Hide();
                // Use this property.
                this.Opacity = 0.0d;
                new Form3(this).ShowDialog();
            }Form3:
            private Form2 form2;
            public Form3(Form2 form2)
            {
                this.form2 = form2;
                InitializeComponent();
            }
            
            private void Form3_FormClosing(object sender, FormClosingEventArgs e)
            {
                // Close form2 when form3 is closing.
                form2.Close();
            }
      

  4.   

    ShowDialog()模式显示,前面的窗体肯定是在后面的,除非你不用ShowDialog方式来显示form3,这样之前开的窗体才可能不跑后面去。
      

  5.   

    我说....比如我开了浏览器,然后把程序挡在浏览器的前面,点一下Form2的button按钮,接着Form3会出现在浏览器的前面,但是Form1却被浏览器挡住了
      

  6.   

    顺便一说,加入任何代码后编译一次都会使这个问题出现,刚刚我试了一下在Form3下加了int x=0;结果这个问题又出现了
      

  7.   

    我的理解是单击form2的button时,form3显示在form1的前端,form2消失,并且是showdialog()的模式,是不是这样?
      

  8.   

    是的,我本来的代码也是这个功能,可是你的代码跟我的代码一样,如果桌面中有其他窗口正在打开,那么Form1将会被他挡住,而且即使用了TopMost这个功能,Form1也会被挡住
      

  9.   

    你写的会啊,我不告诉你用this.Opacity = 0.0d;这段代码吗?
    为什么你还要坚持你写的呢?你写的那个有问题啊~~
      

  10.   

    我在你那段代码中加入了Form2不在任务栏中显示的内容...
      

  11.   


    你把现在的code打包发到我的[email protected]邮箱中,我看看,会有问题么~~
      

  12.   


    不可能啊,你在把有问题的code发给我,我这一直都是可以的~