2012-07-20 36 views
0

在我當前的項目中,我製作了一個便箋式應用程序,其中用戶可以打開具有相同表單的多個實例。然而,我想知道在C#中是否有方法可以創建form1的新實例,但是新窗體的標題/文本/標題是form2。創建form1的新實例並更改該表單屬性

如果這是可以實現的,我希望推動如何編寫我的應用程序的部分的正確方向。

謝謝大家。

- 編輯 -

我意識到我忘了補充一些重要的東西:

我需要能夠計算出有多少實例是當前打開的。從那裏我將爲表單文本添加+1。

回答

1

嘗試從類訪問的形式屬性:

MyForm newForm = new MyForm(); 
newForm.Show(); 
newForm.Text = "Form2"; 

或呼叫當前形式的方法來設置文本:

// In MyForm 
public void SetTitle(string text) 
{ 
    this.Text = text; 
} 

// Call the Method 
MyForm newForm = new MyForm(); 
newForm.Show(); 
newForm.SetTitle("Form2"); 

希望這有助於!

要檢查的形式量打開,你可以嘗試這樣的:

// In MyForm 
private int counter = 1; 
public void Counter(int count) 
{ 
    counter = count; 
} 
// Example 
MyForm newForm = new MyForm(); 
counter++; 
newForm.Counter(counter); 

它可能會產生混淆使用,但可以說你有打開的相同形式的新實例的按鈕。由於您有一個表格在開始counter = 1處打開。每次點擊該按鈕時,它會發送counter++2到表單。如果你打開另一個表單,它會發送counter = 3等等。可能有更好的方法來做到這一點,但我不確定。

+0

是的,謝謝你的快速回答。第一種方法很完美。只是一個問題。有沒有一種方法可以讓我統計我的應用程序運行的總表單數量? – Vlad781 2012-07-20 06:00:45

+0

我編輯了帖子。 – 3aw5TZetdf 2012-07-20 06:04:07

+0

Application.OpenForms可以幫助你。請記住:http://stackoverflow.com/questions/3751554/application-openforms-count-0-always – 2012-07-20 06:04:58

0

使用一個靜態字段來保持已打開多少個實例的計數,並使用它來設置表單的標題。

這是一個草圖;如果你想要不同的行爲,你可以跳過OnFormClosed覆蓋:

public class TheFormClass : Form 
{ 
    private static int _openCount = 0; 

    protected override void OnLoad(EventArgs e) 
    { 
     _openCount++; 
     base.OnLoad(e); 
     this.Text = "Form" + _openCount; 
    } 

    protected override void OnFormClosed(FormClosedEventArgs e) 
    { 
     _openCount--; 
     base.OnFormClosed(e); 
    } 
}