我想檢查一下winform
所做的動作是否成功。Winform返回結果
MainForm form = new MainForm();
form.Show();
//continue in case the form returns true
如何返回並檢查winform關閉後的值?
我想檢查一下winform
所做的動作是否成功。Winform返回結果
MainForm form = new MainForm();
form.Show();
//continue in case the form returns true
如何返回並檢查winform關閉後的值?
你必須使用該DialogResult
:
MainForm form = new MainForm();
DialogResult result = form.ShowDialog();
if (result == DialogResult.OK)
{
}
else
{
}
你必須使用一個按鈕Click
事件處理程序設置窗體的DialogResult
,例如:
private void Button1_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
的調用form.Show()
立即返回。在通話返回之前,用戶將沒有機會做任何事情。如果您想等到用戶按下「確定」或「取消」等按鈕,則需要撥打form.ShowDialog(),以阻止執行代碼的其餘部分,直到窗體關閉。
using(MainForm form = new MainForm())
{
DialogResult dr = form.ShowDialog();
if(dr == DialogResult.OK)
{
// User presses OK button,
// read the public property UserName and
// appply your logic here.
string userName = form.UserName;
}
else if(dr == DialogResult.Cancel)
{
// User presses Cancel button
MessageBox.Show("Login aborted");
}
}
此代碼還需要MainForm類按鈕上的一些屬性設置。 OK按鈕的屬性DialogResult設置爲enum DialogResult.OK,而Cancel按鈕的屬性設置爲DialogResult.Cancel
這樣,當用戶按下OK/Cancel按鈕時,您的MainForm將被隱藏(仍未關閉和/或處置),並且您可以從using塊訪問MainForm實例的公共屬性。
例如,假設OK按鈕事件處理程序包含您的用戶名
private void cmdOK_Click(object sender, EventArgs e)
{
if(.....some kind of authentication method....)
{
this.UserName = "Steve";
....
}
}
的登錄驗證和MainForm類,一個公共屬性名爲username現在
public string UserName {get; private set}
,如圖上面的例子中,您可以檢索使用塊內的UserName屬性
請注意,圍繞調用創建t他的形式實例將確保在關閉大括號處正確處理表單。
謝謝。我應該怎麼做才能將對話框結果設置爲OK? – user3165438
謝謝。爲什麼我不能使用'form.Show'方法? – user3165438
因爲'Show'不會等待'Form'的結果。它繼續在兩個分支執行。因此,你沒有結果。 –