Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使CheckButton像RadioButton一样工作_C#_Asp.net_Checkbox_Radio Button_Devexpress - Fatal编程技术网

C# 如何使CheckButton像RadioButton一样工作

C# 如何使CheckButton像RadioButton一样工作,c#,asp.net,checkbox,radio-button,devexpress,C#,Asp.net,Checkbox,Radio Button,Devexpress,使用Devexpress复选按钮,我想让它们像单选按钮一样工作 下面是我的代码的一部分,是我为所有4个复选按钮编写的,这意味着它必须与代码行的乘法一起乘法,这是不可行的方法 private void cb1_Click(object sender, EventArgs e) { cb2.checked = false; cb3.checked = false; cb4.checked = false; } 我想当我按下其中一个复选

使用Devexpress复选按钮,我想让它们像单选按钮一样工作

下面是我的代码的一部分,是我为所有4个复选按钮编写的,这意味着它必须与代码行的乘法一起乘法,这是不可行的方法

private void cb1_Click(object sender, EventArgs e)
    {
        cb2.checked = false;
        cb3.checked = false;
        cb4.checked = false;
    }

我想当我按下其中一个复选按钮时,有一种更简单的方法来取消选中其他复选按钮。

试试这样的方法:

private void cb_Click(object sender, EventArgs e)
    {
        cb1.checked = false;
        cb2.checked = false;
        cb3.checked = false;
        cb4.checked = false;
        (sender as CheckBox).checked = true;
    }

并将此方法分配给单击事件时的所有复选框。

尝试以下操作:

private void cb_Click(object sender, EventArgs e)
    {
        cb1.checked = false;
        cb2.checked = false;
        cb3.checked = false;
        cb4.checked = false;
        (sender as CheckBox).checked = true;
    }

并将此方法分配给单击事件时的所有复选框。

将相同的事件处理程序分配给每个按钮,则只需要一个方法:

// Create the checkboxes
CheckBox cb1 = new CheckBox();
CheckBox cb2 = new CheckBox();
CheckBox cb3 = new CheckBox();
CheckBox cb4 = new CheckBox();

private void Form1_Load(object sender, EventArgs e)
{
    // Positioning
    cb1.Left = 10;
    cb2.Left = 10;
    cb3.Left = 10;
    cb4.Left = 10;
    cb1.Top = 10;
    cb2.Top = 30;
    cb3.Top = 50;
    cb4.Top = 70;

    // IMPORTANT BIT - Assign even handlers
    cb1.Click += new EventHandler(CbClick);
    cb2.Click += new EventHandler(CbClick);
    cb3.Click += new EventHandler(CbClick);
    cb4.Click += new EventHandler(CbClick);

    // Add to form
    this.Controls.Add(cb1);
    this.Controls.Add(cb2);
    this.Controls.Add(cb3);
    this.Controls.Add(cb4);
}

private void CbClick(object sender, EventArgs e)
{
    // Uncheck all
    cb1.Checked = false;
    cb2.Checked = false;
    cb3.Checked = false;
    cb4.Checked = false;

    // Check the one that was clicked
    (sender as CheckBox).Checked = true;
}
这个例子看起来很长,因为它是完整的,但实际上您只需要事件处理程序和方法


希望这有帮助。

为每个按钮分配相同的事件处理程序,那么您只需要一个方法:

// Create the checkboxes
CheckBox cb1 = new CheckBox();
CheckBox cb2 = new CheckBox();
CheckBox cb3 = new CheckBox();
CheckBox cb4 = new CheckBox();

private void Form1_Load(object sender, EventArgs e)
{
    // Positioning
    cb1.Left = 10;
    cb2.Left = 10;
    cb3.Left = 10;
    cb4.Left = 10;
    cb1.Top = 10;
    cb2.Top = 30;
    cb3.Top = 50;
    cb4.Top = 70;

    // IMPORTANT BIT - Assign even handlers
    cb1.Click += new EventHandler(CbClick);
    cb2.Click += new EventHandler(CbClick);
    cb3.Click += new EventHandler(CbClick);
    cb4.Click += new EventHandler(CbClick);

    // Add to form
    this.Controls.Add(cb1);
    this.Controls.Add(cb2);
    this.Controls.Add(cb3);
    this.Controls.Add(cb4);
}

private void CbClick(object sender, EventArgs e)
{
    // Uncheck all
    cb1.Checked = false;
    cb2.Checked = false;
    cb3.Checked = false;
    cb4.Checked = false;

    // Check the one that was clicked
    (sender as CheckBox).Checked = true;
}
这个例子看起来很长,因为它是完整的,但实际上您只需要事件处理程序和方法


希望这有帮助。

在DevExpress
CheckButton
类中有属性。如果您将多个
CheckButton
控件的此属性设置为相同的非负值,则此控件将组合到一个逻辑组中,一次只能检查一个按钮,因此无需像您在代码中所做的那样进行操作。
下面是一个例子:

var form = new Form();

for (int index = 0; index < 5; index++)
{
    var cb = new CheckButton()
    {
        Left = 10,
        Top = 10 + index * 20,
        Text = "CheckButton" + index,
        GroupIndex = 0 //<= the same group for each CheckButton
    };

    form.Controls.Add(cb);
}

form.Show();
var form=new form();
对于(int-index=0;index<5;index++)
{
var cb=新的检查按钮()
{
左=10,
Top=10+索引*20,
Text=“CheckButton”+索引,

GroupIndex=0/在DevExpress
CheckButton
类中有属性。如果您将多个
CheckButton
控件的此属性设置为相同的非负值,则此控件将组合为一个逻辑组,其中一次只能检查一个按钮,因此无需进行类似的操作您在代码中完成了此操作。
下面是一个例子:

var form = new Form();

for (int index = 0; index < 5; index++)
{
    var cb = new CheckButton()
    {
        Left = 10,
        Top = 10 + index * 20,
        Text = "CheckButton" + index,
        GroupIndex = 0 //<= the same group for each CheckButton
    };

    form.Controls.Add(cb);
}

form.Show();
var form=new form();
对于(int-index=0;index<5;index++)
{
var cb=新的检查按钮()
{
左=10,
Top=10+索引*20,
Text=“CheckButton”+索引,

GroupIndex=0//循环浏览一组按钮,确定单击了哪个按钮(
sender
I release?),并将其余的设置为false。此外,如果代码有效,这更像是一项工作。循环浏览一组按钮,确定单击了哪个按钮(
sender
I release?)另外,如果代码有效,这更像是一项工作。这不会使它变得更短:)这不会使它变得更短:)这必须在课堂上编写吗?@oljko你在说什么?如果你在谈论示例,那么这个示例是为了测试目的,所以你可以简单地在表单a中添加一些按钮在按钮点击事件handle中写下这个例子。如果你说的是
GroupIndex
属性,那么这个属性在你的设计器中是可用的,所以你可以直接在那里设置这个属性的值。这个属性必须在类中写吗?@oljko你在说什么?如果你说的是示例,那么这个例子用于测试目的,因此您只需在表单中添加一些按钮,并在按钮单击事件handle中编写此示例。如果您谈论的是
GroupIndex
属性,则此属性在设计器中可用,因此您可以直接在此处设置此属性的值。