Kpt*_*aos 3 c# textbox messagebox
当用户选择它的格式时,我正在对我的ID字段进行验证.验证工作除外,当它显示消息框时,您选择确定,然后它再次重复,然后返回到表单.我在下面提供了我的代码.我使用dialogresult部分来查看是否执行某个操作会阻止问题.这是通过使用其中一个答案提到的Click事件来解决的.
private void rChkBoxB_ToggleStateChanged(object sender, Telerik.WinControls.UI.StateChangedEventArgs args)
{
if (Convert.ToInt32(rTxtBoxFormatID.Text) > 256)
{
DialogResult dialogresult = MessageBox.Show("B does not support numbering over a number!", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
if (dialogresult == DialogResult.OK)
{
rChkBoxB.Checked = false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
新问题是在click事件后将复选框恢复为false.这是我更新的代码.典型的checkbox.checked = false不会将其更改回false.我使用断点来验证我是否获得了if语句,并且我的复选框的值为false.如何将属性更改为false?
private void rChkBoxB_Click(object sender, EventArgs e)
{
if (Convert.ToInt32(rTxtBoxFormatID.Text) > 256)
{
DialogResult dialogresult = MessageBox.Show("B does not support numbering over a number!", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
if (dialogresult == DialogResult.OK)
{
rChkBoxB.Checked = false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
因为你在对话结果的回报中设置了Checked = false?因此,再次切换状态?
编辑:值得注意的是,您可能正在使用CheckStateChanged事件.因此,您选中复选框(将其设置为true),它会触发,显示MessageBox,您将复选框设置为false,这反过来会导致事件再次触发(您正在更改状态).
这是您可以使用Click事件的地方,而不是设置标志(建议的解决方案).这样,当您将复选框设置为false时,在代码中,Click事件将不会触发.在运行时,对于复选框,单击事件将始终打开/关闭复选框,无论您在何处单击复选框.
总之,只需使用Click事件:
private void rChkBoxB_Click(object sender, EventArgs e)
{
if (Convert.ToInt32(rTxtBoxFormatID.Text) > 256)
{
DialogResult dialogresult = MessageBox.Show("B does not support numbering over a number!", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
if (dialogresult == DialogResult.OK)
{
rChkBoxB.Checked = false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
当然,在你的代码的任何一个版本中,我假设你想要在检查它时是否真正检查Text> 256.所以你可能想:
private void rChkBoxB_Click(object sender, EventArgs e)
{
if (rChkBoxB.Checked == false) return; // NEW CODE HERE
if (Convert.ToInt32(rTxtBoxFormatID.Text) > 256)
{
DialogResult dialogresult = MessageBox.Show("B does not support numbering over a number!", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
if (dialogresult == DialogResult.OK)
{
rChkBoxB.Checked = false;
}
}
}
Run Code Online (Sandbox Code Playgroud)