2014-09-03 76 views
0

我真的很感興趣,我怎樣才能得到我的變量值,如表單名稱或表單文本在program.cs! 例如,我有這樣的代碼在我的表單如何從窗體獲取值到Program.CS(例如當前窗體名稱)?

 public partial class Main : Form 
    { 
     private string FormLocation = null; 
     public Main() 
     { 
      InitializeComponent(); 
      FormLocation = this.Name; //<==== Important 
     } 
} 

現在我只想Program.cs中FormLocation價值註冊的所有用戶活動的,我需要知道在形成用戶與形式的關閉按鈕退出 正如我在Program.cs中的代碼是:

static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.ApplicationExit += new EventHandler(Application_ApplicationExit); 
     Application.Run(new Form1()); 
    } 
    static void Application_ApplicationExit(object sender, EventArgs e) 
    { 
     if (DialogResult.OK == MessageBox.Show("Are You Sure To Exit?", "ExitConfirmation", MessageBoxButtons.OKCancel)) 
     { 
     ActivityRegistration(UserId, FormLocation); //<===== Important 
      if (System.Windows.Forms.Application.MessageLoop) 
       { 
       System.Windows.Forms.Application.Exit(); 
       } 
      else 
       { 
       System.Environment.Exit(1); 
       } 
     } 
    } 
+0

注意,我不想使用窗體events.i想要program.cs中的唯一方法來完成所有窗體的工作...正如您在示例代碼的第二部分中所看到的。我確實爲所有類型的應用程序編寫了一個事件 – user3823980 2014-09-03 04:45:34

+0

您不想跟蹤每個表單的表單關閉事件嗎? – Hassan 2014-09-03 04:46:22

+0

我的問題是EXACTLLY: 如何在PROGRAM.CS中寫入一個事件來識別所有窗體,當他們進入關閉狀態時FormCloseButton – user3823980 2014-09-03 04:48:49

回答

0

軌道FormClosing活動形式。

在應用程序退出每個表單關閉事件被觸發。從可以訪問的公開List<string>保存表格的名稱。

的Program.cs

static class Program 
{ 
    static public List<string> lstClosedForms; 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.ApplicationExit += new EventHandler(Application_ApplicationExit); 
     lstClosedForms = new List<string>(); 
     Application.Run(new Form1());   
    } 

    static void Application_ApplicationExit(object sender, EventArgs e) 
    { 
      if (DialogResult.OK == MessageBox.Show("Are You Sure To Exit?", "ExitConfirmation", MessageBoxButtons.OKCancel)) 
      { 
       ActivityRegistration(UserId, lstClosedForms); // 2nd argument changed to List<string> 

       if (System.Windows.Forms.Application.MessageLoop)    
         System.Windows.Forms.Application.Exit();    
       else    
         System.Environment.Exit(1);    
      } 
    } 
}  

Form1中

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     this.FormClosing += new FormClosingEventHandler(Form1_FormClosing); 
    } 

    void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     Program.lstClosedForms.Add(this.Name); 
    } 
} 

注意:修改只要創建新表列表。

+0

請給我一些示例代碼,我不明白如何做到這一點 順便說一句。我不想使用FormClosinng事件... 注意:我希望Program.cs中的一種方法可以爲所有表單執行作業自動化 – user3823980 2014-09-03 04:42:30

+0

在這種情況下,將更改ActivityRegistration方法。使用自定義類來跟蹤每個表單的信息。 – Hassan 2014-09-03 04:44:46

+0

static public List lstClosedForms; 爲什麼要聲明一個List?爲什麼不使用一個字符串? – user3823980 2014-09-03 05:04:32

相關問題