2015-08-08 60 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