我有一個對話框,當單擊確定按鈕時我想阻止關閉,但返回並且即使AcceptButton屬性設置爲none而不是我的OK按鈕。阻止它關閉的最好方法是什麼?單擊確定按鈕時阻止ShowDialog()返回
回答
事實上,你正在改變錯誤的屬性。你肯定希望AcceptButton
是確定按鈕。此屬性決定哪個是Windows條款中的默認按鈕。這是當您按鍵盤上的ENTER時按下的按鈕。通過更改AcceptButton
,您只需將鍵盤界面切換到對話框。您不會以任何方式影響按鈕被按下時發生的情況。
你需要做的是將你的按鈕的DialogResult
屬性設置爲DialogResult.None
,因爲這決定了按鈕按下是否關閉窗體。然後,在按鈕的點擊處理程序中,您需要決定如何響應按鈕按下。我預計,如果對話框的驗證成功,您應該通過設置窗體的DialogResult
屬性來關閉對話框。例如,
private void OKbuttonClick(object sender, EventArgs e)
{
if (this.CanClose())
this.DialogResult = DialogResult.OK;
}
您還需要刪除按鈕本身的DialogResult
,並在按鈕的屬性窗口中將其設置爲None
。
http://msdn.microsoft.com/en-us/library/system.windows.forms.button.dialogresult.aspx
如果此屬性的DialogResult設置爲比 無其他任何東西,如果是通過ShowDialog的 方法顯示父窗體,單擊按鈕關閉父窗體,而你不必 掛鉤任何事件。
顯然,現在您的按鈕不會執行任何操作,因此您需要爲Click
事件註冊處理程序。
停止此行爲的最佳方法是在設計時在屬性窗口中將OK按鈕的DialogResult屬性更改爲DialogResult.None
。
另外,如果您已經在OK按鈕的單擊事件中有一些代碼,則可以更改DialogResult窗體。
private void comOK_Click(object sender, EventArgs e)
{
// your code .....
// Usually this kind of processing is the consequence of some validation check that failed
// so probably you want something like this
if(MyValidationCheck() == false)
{
// show a message to the user and then stop the form closing with
this.DialogResult = DialogResult.None;
}
}
最佳做法是將Ok按鈕設置爲禁用而不是對用戶輸入做出響應。
根據窗體的不同,DialogResult屬性應該設置爲Ok或Yes,AcceptButton也應鏈接到Ok。
我通常在所有對話框上創建一個函數,並在用戶與數據交互時調用它。
void RefreshControls() { button.Enabled = this.ValidateInput(); }
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form2 fLogin = new Form2();
if (fLogin.ShowDialog() == DialogResult.OK)
{
Application.Run(new Form1());
}
else
{
Application.Exit();
}
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void btnKlik_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
- 1. 如何阻止返回按鈕?
- 2. PHP:按下「返回」按鈕時阻止表單被意外重新處理
- 3. Bootstrap Modal - 如果單擊是按鈕時返回True - 定製確認
- 4. 返回按鈕時返回按鈕
- 5. 如何阻止asp.net按鈕被雙擊?
- 6. wxpython按鈕被阻止/未點擊
- 7. Javascript阻止ASP.NET按鈕點擊
- 8. 單擊按鈕時如何停止autoslide?
- 9. 單擊Html.ActionLink時,返回Html.BeginForm中所選單選按鈕的值?
- 10. 單選按鈕確認,同時單擊「繼續」按鈕的Javascript
- 11. 按BACK按鈕時阻止緩存
- 12. 定時器不停止按鈕點擊
- 13. 當表單提交後點擊'返回'按鈕時,防止瀏覽器激活
- 14. 當我點擊返回按鈕下拉菜單不會返回
- 15. 單擊瀏覽器返回按鈕時無法獲得正確的輸入值?
- 16. 空文本框 - 返回錯誤或阻止按鈕的方式
- 17. 如何阻止硬件返回按鈕並重新登錄
- 18. Backbone.history.start()阻止返回按鈕離開頁面
- 19. File.ReadAllText阻止窗體關閉x按鈕單擊
- 20. ASP.NET:ModalPopupExtender阻止按鈕單擊事件從發射
- 21. 提交表單上的阻止按鈕
- 22. 阻止提交表單的Asp.NET按鈕
- 23. 單擊後退按鈕時返回 - 初學者
- 24. Android EditText:單擊返回按鈕時關閉鍵盤
- 25. 如何僅在單擊按鈕時才返回變量的值?
- 26. 防止在單擊div內的按鈕時單擊父母
- 27. 停止GPS返回按鈕按
- 28. 如何在點擊按鈕時阻止重複動作?
- 29. Java異常阻止關閉程序(點擊X按鈕時)
- 30. 安卓 - 阻止鎖定硬件按鈕