【发布时间】:2010-11-25 04:42:34
【问题描述】:
有什么方法可以在 RadioButton 或 CheckBox 改变之前取消它的状态改变?
我希望有一个简单的事件,例如 CheckedChanging 或 BeforeCheckedChange。
我真的想避免监听鼠标点击和按键。但如果您知道使用鼠标点击和按键的可靠方法,请解释一下。
我正在使用带有标准 Winforms 控件的 .NET 2.0。
【问题讨论】:
有什么方法可以在 RadioButton 或 CheckBox 改变之前取消它的状态改变?
我希望有一个简单的事件,例如 CheckedChanging 或 BeforeCheckedChange。
我真的想避免监听鼠标点击和按键。但如果您知道使用鼠标点击和按键的可靠方法,请解释一下。
我正在使用带有标准 Winforms 控件的 .NET 2.0。
【问题讨论】:
将自动检查设置为 false。
覆盖 OnClick 以手动选中复选框
【讨论】:
e.Cancel = true; 987654323@财产。
If the AutoCheck property is set to false, a group of RadioButton controls will not act as a mutually exclusive group and the Checked property must be updated in code
代码演示的AutoCheck,给Click事件增加了确认提示。
public partial class Form1 : Form { public Form1() { InitializeComponent(); this.checkBox1.AutoCheck = false; this.checkBox1.Click += new System.EventHandler(this.checkBox1_Click); } private void checkBox1_Click(object sender, EventArgs e) { CheckBox checkBox = (CheckBox)sender; if (!checkBox.Checked) { DialogResult dialogResult = MessageBox.Show( "Are you sure?", "my caption", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { checkBox.Checked = true; } } else { checkBox.Checked = false; } } }
【讨论】:
我用它来取消单选按钮检查。
private void radioButton1_MouseClick(object sender, MouseEventArgs e)
{
RadioButton r = (RadioButton)sender;
r.Checked = !(r.Checked);
}
【讨论】:
private void cbSuspended_CheckedChanged(object sender, EventArgs e)
{
var result = MessageBox.Show("Are you sure?", "Change status", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
if (result != DialogResult.Yes)
{
cbSuspended.CheckedChanged -= cbSuspended_CheckedChanged;
cbSuspended.Checked = !cbRemoved.Checked;
cbSuspended.CheckedChanged += cbSuspended_CheckedChanged;
return;
}
}
【讨论】: