我曾經閱讀過一篇關於如何創建一個新窗體的教程,並使其在所有其他窗口之上,因此您只能點擊它 - 就像在Internet Explorer中一樣,例如當您單擊瀏覽文件時您不能單擊主窗口直到完成使用瀏覽窗口。如何創建新表單並使所有其他表單無法點擊直至該表單被丟棄?
什麼是從表單獲取值的最佳方式,對於我的第二種形式的exmpale我有一個列表框,當用戶單擊其中一個值時,第一個表單(mainform)應該獲取事件 - 是這可能嗎?
我曾經閱讀過一篇關於如何創建一個新窗體的教程,並使其在所有其他窗口之上,因此您只能點擊它 - 就像在Internet Explorer中一樣,例如當您單擊瀏覽文件時您不能單擊主窗口直到完成使用瀏覽窗口。如何創建新表單並使所有其他表單無法點擊直至該表單被丟棄?
什麼是從表單獲取值的最佳方式,對於我的第二種形式的exmpale我有一個列表框,當用戶單擊其中一個值時,第一個表單(mainform)應該獲取事件 - 是這可能嗎?
你在找什麼是展現形式爲模式對話框。 Form.ShowDialog()
Here you can read more about this topic.
您可以在幾個方式訪問父窗體(回體)
爲了得到孩子的事件形成,你可以做這樣的事情:
form.myListBox.SelectedIndexChanged += new System.EventHandler(this.myListBox_SelectedIndexChanged);
form.ShowDialog();
您需要公開myListBox控件以便從父(調用者)窗體訪問它。
只需使用模態窗體,通過在創建實例後調用.ShowDialog()
來完成。
要獲取值,只需將它們存儲在窗體的屬性中,然後在父窗口/代碼超出範圍之前從父窗口/代碼讀取這些屬性。您將在新窗體的代碼隱藏中處理SelectionChanged
事件,並使用該值設置屬性。
這聽起來像你想:
using (MyCustomForm form = new MyCustomForm(...))
{
if (form.ShowDialog() == DialogResult.OK) {
// Now use the values in form
// (e.g. through properties of the form)
}
}
試試這個:
創建形式和 在你調用代碼執行以下操作:
MyForm form = new MyForm();
form.ShowDialog();
要得到值回來,只需在表單上創建映射到控件值的屬性(確保在訪問屬性之前不要處理表單!):
public class MyForm
{
//...
public string FirstName
{
get
{
return firstNameTextBox.Text;
}
}
}
對話完成後,從您的調用代碼然後調用屬性:
MyForm form = new MyForm();
if(form.ShowDialog() == DialogResult.OK)
{
string myFirstName = form.FirstName;
// etc
}
這不會真正幫助,因爲我需要值作爲一個事件 - 有人選擇名稱的時刻。 – 2011-03-29 18:37:43
非常感謝:)爲我工作。我用這個有點不同,但工作:) – 2011-03-29 18:39:04