比如做一个用户登录的新窗体f2,主窗体中打开新窗体f2,接收用户登录信息,我想让f2一直作为当前窗体,同时让主窗体在f2被关闭前无法被选中,应该用哪个属性?似乎对主窗体设置visible和enabled都无法阻止鼠标把他点击成当前窗口。另外,程序主窗体也有吗?我在新打开的窗体f2里怎样调用主窗体的方法?

解决方案 »

  1.   

    用模式窗体Form2 f2 = new Form2();
    f2.ShowDialog();
      

  2.   

    我在新打开的窗体f2里怎样调用主窗体的方法?
    你可以在主窗体中定义一个静态方法  直接用窗体名.方法名调用
    应该用哪个属性?似乎对主窗体设置visible和enabled都无法阻止鼠标把他点击成当前窗口。使启动 Windows 窗体不可见 
    要使 Windows 应用程序的主窗体在应用程序启动时不可见,必须将应用程序的启动逻辑移动到单独的类中。不能简单地将其 Visible 属性设置为 false。 将应用程序的生存期与窗体的生存期分隔开以后,可以使窗体可见(和不可见),因为当您“关闭”用于启动应用程序的类时,应用程序将结束。 注意 由于模块的代码运行时模块不可见,下面的过程包括在启动模块中添加消息框的步骤,以简单说明应用程序正在运行。 
    将窗体设置为在开始时不可见 
    可以间接来解决此问题 
    this.ShowInTaskbar=false; 
    this.WindowState=System.Windows.Forms.FormWindowState.Minimized; 
    在双击时, 
    使windowstate复原就行了。
      

  3.   

    支持用模式对话框的方法 .ShowDialog()
      

  4.   

    用showdialog()解决问题了,但是对jin_yong所说的窗体名.方法名的方法仍然不解,Application.Run(new Form1());创建主窗体,主窗体的窗体名是什么?
      

  5.   

    用showdialog()解决问题了,但是对jin_yong所说的窗体名.方法名的方法仍然不解,Application.Run(new Form1());创建主窗体,主窗体的窗体名是什么?
    ----------------------------------------------------------------------
    比如说你的Form1中有一个静态方法        public static string HelloWorld()
            {
                return "Hello World!";
            }在Form2中就可以这样调用        private void Form2_Load(object sender, EventArgs e)
            {
                richTextBox1.Text = Form1.HelloWorld();
            }
      

  6.   

    本人有不同以上的意见, 让你的F2成为主窗体,  也就是说, 一启动系统,  你就打开F2,  只是在F2打开前调用F1, F1为登录窗体,  这样一来也不要总有一个不用了的窗体F1在烦你,  我写过这是可以实现的,
      

  7.   


    要调用的F1窗体的方法应为public 
    重写F2构造函数
           form1 f1;
           Form2(form1 myform)
           {
              this.f1= myform;
           }
    就可以在F2中调用F1的方法了。