c# - 按下按钮后如何设置DialogResult?
问题描述
我正在使用 Windows 窗体设计器创建一个密码窗口,但上下文有点不同。有几个输入字段,其中一个受密码保护。有一个“更改”按钮,可在主窗口顶部生成一个新的密码窗口。用户输入密码尝试并按下“确定”。我需要一种方法让 OK 按钮检查密码,然后发送DialogResult.OK
回主窗口,或者如果尝试不正确,则显示“密码错误”。这意味着我最初无法将其设置DialogResult
为DialogResult.OK
,所以我不确定如何执行此操作。
目前我在点击事件函数中设置DialogResult
为DialogResult.OK
,但显然这将它设置为下一次点击,而不是当前点击,所以用户必须按两次确定按钮。
private void buttonOK_Click(object sender, EventArgs e)
{
string passwordAttempt = textBoxPassword.Text;
if( passwordAttempt.CompareTo("pass") == 0 )
{
this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK;
}
}
一种可能的解决方案是通过代码触发第二个事件(不确定如何执行此操作)。或者,在这种情况下,有没有更好的方法来做我没有想到的密码窗口?
解决方案
- 将
AcceptButton
对话框的 设置为buttonOK
(确定按钮)。您可以在代码或设计器中执行此操作。 - 设置
DialogResult
对话框形式的,而不是按钮。
代码:
this.AcceptButton = buttonOK;
...
private void buttonOK_Click(object sender, EventArgs e)
{
string passwordAttempt = textBoxPassword.Text;
if (passwordAttempt.CompareTo("pass") == 0)
{
this.DialogResult = System.Windows.Forms.DialogResult.OK;
Close();
}
}
推荐阅读
- php - Woocommerce:在帐户下载中显示产品缩略图
- three.js - 对于threejs,3d对象不旋转低于400px分辨率(如iphone 6)
- r - 如何按一列分组然后将另一列转换为向量?
- ios - Iphone 设备未连接到 Xcode
- pine-script - ATR 目标/停止点永远不会被击中
- kubernetes - 获取helm回滚镜像版本
- c# - 无法将数据表写入Excel c#
- angular - 我尝试了 npm install --legacy-peers,但仍然没有收到导出的成员 node_modules 错误
- linux-kernel - 在 RHEL7 中将用户添加到用户组
- or-tools - OR-Tool - 如何找到不需要访问所有节点的 VRPTW 解决方案?