2015-08-08 56 views
0

只是一些简短的背景信息: 我一直在编写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"; 
    } 
} 

但是我得到这个错误:

“表”不包含定义“txtText”和没有扩展名方法'txtText'接受类型'Form'的第一个参数可以找到(你是否缺少使用指令或程序集引用?)

如何解决此错误,是否有更简单的方法来交流放弃我的目标?

回答

0

基类表不包含名为“txtText”,你需要声明的形式的确切类型的文本框,而不是一般的基类

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

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

作为一个侧面说明,为什么你需要保留整个登录表单吗?如果你只需要知道你的用户是否已经登录,那么你可以存储一个布尔变量LoginSuccessful

+0

我想我今天炒了我的大脑编码太多了,我的目标是将我的VB .Net项目到C#(完成它大部分使用[这个转换器]) 感谢您修复,但我确实有更多的错误修复之前检查它是否在运行时工作。另外,关于为什么我要存储整个登录表单,这是因为我需要访问的不仅仅是该文本框,还有更多的文本框。这只是我需要帮助的一个例子。 – CyberTechnologyInc

+0

无论如何,我会建议创建一个专门的类来保存您的登录信息。如果没有更多的参考文献被激活,这将在未来变得更容易被滥用,并且将释放与可能被关闭的表格相关的资源。 – Steve

+0

临时班?我从来没有听说过,你有什么样的例子,它的使用? – CyberTechnologyInc