如何从类中获取开放表单的引用

时间:2015-08-08 21:21:01

标签: c# forms reference multiple-forms

一些简短的背景资料: 我已经编写了VB.Net和PHP编程至少两年(自学成才),所以请原谅我,如果我的术语和编码习惯不是一流的。我会根据你的意见改进!

好的,所以我目前有一个登录表单,在Program.cs中设置为启动对象。这是我创建登录表单的新实例并通过引用将其传递给FormInstances类(在Misc.cs中)。

using System;
using System.Windows.Forms;

namespace Blah{
    class Program{
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.SetCompatibleTextRenderingDefault(false);
            Application.EnableVisualStyles();

            var LoginFRM = new Login();
            LoginFRM.ShowDialog();

            if(LoginFRM.LoginSuccessful == true) {
                FormInstances.LoginForm = LoginFRM;
                Application.Run(new MainForm());
            }else{
                Application.Exit();
            } 
        }
    }
}

这是我在Misc.cs中的代码:

namespace Blah{
    public static class FormInstances {
        public static Form LoginForm;
    }

    public class Misc{
        FormInstances.LoginForm.txtTest.text = "test";
    }
}

但是我收到了这个错误:

'Form'不包含'txtText'的定义,并且没有扩展方法'txtText'接受类型'Form'的第一个参数(你是否缺少using指令或汇编引用?)

如何修复此错误,是否有更简单的方法来实现我的目标?

1 个答案:

答案 0 :(得分:0)

基类Form不包含名为&#39; txtText&#39;的文本框,您需要声明表单的确切类型,而不是通用基类

namespace Blah{
    public static class FormInstances {
        public static Login LoginForm;
    }

    public class Misc{
        FormInstances.LoginForm.txtTest.text = "test";
    }
}

作为旁注,为什么需要保存整个登录表单?如果您只需要知道您的用户是否已被记录,那么您可以只存储从属性LoginSuccessful获得的布尔变量