我有一個對話框,當單擊確定按鈕時我想阻止關閉,但返回並且即使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. 單擊按鈕時阻止表單提交
- 3. 單擊確定按鈕後,JDialog上的值不會返回
- 4. Android AlertDialog如何阻止第二次點擊確定按鈕?
- 5. PHP:按下「返回」按鈕時阻止表單被意外重新處理
- 6. 阻止訂單按鈕
- 7. Bootstrap Modal - 如果單擊是按鈕時返回True - 定製確認
- 8. 返回按鈕時返回按鈕
- 9. Javascript阻止ASP.NET按鈕點擊
- 10. wxpython按鈕被阻止/未點擊
- 11. 如何阻止asp.net按鈕被雙擊?
- 12. 當用戶點擊返回按鈕時停止定時器運行(UINavigationController)
- 13. 停止在返回按鈕上點擊重定向頁面
- 14. 單擊按鈕時防止抖動div
- 15. 單擊按鈕時如何停止autoslide?
- 16. 點擊返回按鈕時IE爲空
- 17. 當我點擊返回按鈕時,廣播接收器停止
- 18. 單擊Html.ActionLink時,返回Html.BeginForm中所選單選按鈕的值?
- 19. 按BACK按鈕時阻止緩存
- 20. 單選按鈕確認,同時單擊「繼續」按鈕的Javascript
- 21. 單擊「X」按鈕時要求確認
- 22. 定時器不停止按鈕點擊
- 23. 當表單提交後點擊'返回'按鈕時,防止瀏覽器激活
- 24. 當我點擊返回按鈕下拉菜單不會返回
- 25. Java,thread.sleep()阻止使用按鈕(不能識別按鈕點擊)
- 26. 單擊瀏覽器返回按鈕時無法獲得正確的輸入值?
- 27. Modalpopupextender收盤時點擊「確定」按鈕
- 28. Backbone.history.start()阻止返回按鈕離開頁面
- 29. 如何阻止硬件返回按鈕並重新登錄
- 30. 空文本框 - 返回錯誤或阻止按鈕的方式