2017-08-23 28 views
0

我有一系列Windows窗體,它們的行爲類似於基於Web的應用程序。我有一個將標籤的文本設置爲隨機數的表單,並且我試圖將該數字傳遞給其他表單,並確保它隨處更新。我沒有創建數據庫的能力,所以我就這麼做了。我想在窗體加載時第一次運行代碼片段

我遇到的問題是,當我移動應用程序並使用一個按鈕將我帶回第一個可以獲得隨機數的頁面時,代碼再次運行並且數字發生變化。

private void goToPage2_Click(object sender, EventArgs e) 
{ 
    this.Hide(); 
    var form3 = new FORM3(); 
    form3.ShowDialog(); 
    this.Close(); 
} 

我已經評論了關閉和嘗試顯示,而不是ShowDialog,但應用程序崩潰。

基本上我只需要弄清楚如何檢測表單是否已經在應用程序的生命中創建過一次,並且只有隨機代碼在那個時候運行,而不是每次回到頁面時通過只使用應用程序就像我想要它使用。

我使用Windows窗體來節省時間,因爲它僅用於演示目的,不想處理CSS和Bootstrap。

謝謝。

回答

1

在窗體的Shown event handler中運行它。

從鏈接:

所示的事件只提出的第一個時間的形式來顯示

Load event handler

從該鏈接:

被顯示在第一次的形狀之前發生。

取決於您確切需要執行的時間。

如果您每次都在創建新表單,並且只想知道在應用程序執行過程中是否發生了某些事情 - 有一個public static bool變量,請在代碼執行時對其進行設置,並在此之前檢查它。例如:

if(!Class1.theFlag) 
{ 
    Class1.theFlag = true; 
    //run your code here. 
} 
+0

他只想要第一個例子。 – SLaks

+0

@SLaks我相應地編輯了我的答案,以防OP真的需要。 – ispiro

+0

我剛剛寫出了顯示事件的方法,並在其中放置了一個消息框。當我運行我的程序並推到第二個表單時,我沒有收到消息框彈出。我手動寫出了該方法,並且使用MSDN文檔進行了雙重檢查,但它不起作用。還將隨機數字片段放在_Load方法中,當我回到第二個表單時它會重新運行。 所以,如果你是在form2上,標籤是33,你可以按下一個按鈕去表格3,然後另一個返回到form2,這個數字是726,而不是我想要的33。 – TomG103

0

如果您不能將變量存儲在數據庫中,並且需要在Windows窗體之間傳遞這些值,只需向項目中添加一個新類即可。

無論你想要什麼,都可以命名該類。我將我的類數據命名爲靜態類。

然後添加獲取和設置的方法。

public static int someNum 
{ 
    get; set; 
} = 0; 

public static string someString 
{ 
    get; set; 
} = ""; 

所以,現在您可以將這些值設置爲data.someNum或data.someString,而不必檢查這個或那個。比我在這裏遇到的很多例子快得多,代碼少得多。

我想感謝Ispiro在這裏教育我。謝啦。

相關問題