【问题标题】:How to set IsEnabled false to all buttons of radiobutton如何将 IsEnabled false 设置为单选按钮的所有按钮
【发布时间】:2014-08-08 19:43:47
【问题描述】:

我是 c# 开发人员,我正在尝试以编程方式将所有单选按钮设置为 false。

如何将所有单选按钮设置为 IsEnabled= false ?

编辑:请注意,我有一种情况,我必须保留这个收音机。IsEnabled = false;仅在循环之外,有什么方法可以让我仍然拥有所有按钮 IsEnable= false ?

【问题讨论】:

  • 作为替代,注意可以使用GroupBox或Panel来保存所有的RadioButtons,然后设置GroupBox或Panel的IsEnabled属性,它会自动为所有子控件设置它(即所有单选按钮)。
  • @MatthewWatson 你非常接近我想要的。你能详细解释一下关于 groupBox 的事情吗?
  • @MatthewWatson 实际上我这样做 ISEnable 是这样的: element.FindName("param_" + enableElement).GetType().GetProperty("IsEnabled").SetValue(element.FindName("param_" + enableElement ), isEnabled, null); (向你解释一下我正在尝试做的事情。)
  • @MatthewWatson 请查看代码编辑以了解确切情况
  • 我不熟悉 Silverlight,所以我不完全确定它是否会以相同的方式工作,但我要说的是:使用 Windows 窗体,您可以创建一个 GroupBox 或Panel 容器控件作为一组子控件(如 RadioButtons)的父级,然后 Groupbox/Panel 的 IsEnabled 属性充当所有子控件的主开关。这使您只需使用容器控件的 IsEnabled 即可打开和关闭所有子控件。

标签: c# silverlight radio-button silverlight-5.0 isenabled


【解决方案1】:

那是因为您将 radio.IsEnabled = false; 放在了循环之外。

{
    radio = new RadioButton()
    {
        Content = item,
        GroupName = "MyRadioButtonGroup",
       // Name = "param_"+param.Name
    };
    radio.Checked += (o, e) =>
    {
        txtblkShowStatus.Text = item;             
    };
    sp.Children.Add(radio);
    radio.IsEnabled = false;

    count++;                
}

【讨论】:

  • 坦克寻求答案,但请参阅问题的编辑
  • 请查看我代码中的注释部分,我不必以这种方式将 IsEnabled 设置为 false。
  • 我不认为你知道你想要什么。这个答案是您正在寻找的答案。在循环之外。
【解决方案2】:

我认为将 radio.IsEnabled = false; 放入循环中就可以解决问题..

编辑:

我不确定我是否完全理解您为什么要在第二步中设置为 false,但是您可以尝试:

foreach (Radiobutton r in sp.Childern)
{
 r.IsEnabled = false;  
}

【讨论】:

  • 坦克寻求答案,但请参阅问题的编辑
【解决方案3】:

尝试下面的代码并在代码块中使用isEnable,如下所示

foreach (String item in param.Component.Attributes[0].Item)
{
    radio = new RadioButton()
    {
        Content = item,
        GroupName = "MyRadioButtonGroup",
       // Name = "param_"+param.Name
    };
    radio.Checked += (o, e) =>
    {
        txtblkShowStatus.Text = item;             
    };
    sp.Children.Add(radio);
    radio.IsEnabled = false;

    count++;                
}

【讨论】:

  • 感谢您的回答,但请参阅问题的编辑。
【解决方案4】:

您正在使用在函数外部声明的变量radio,像这样将其声明为局部变量,并在每次创建时设置IsEnabled

foreach (String item in param.Component.Attributes[0].Item)
{
     RadioButton radio = new RadioButton()
    {
        Content = item,
        GroupName = "MyRadioButtonGroup",
       // Name = "param_"+param.Name
    };
    radio.Checked += (o, e) =>
    {
        txtblkShowStatus.Text = item;             
    };
    radio.IsEnabled = false;
    sp.Children.Add(radio);
    count++;     
}

【讨论】:

  • 感谢您的回答,但请参阅问题的编辑。
  • 函数外部的radio变量,应该与函数内部创建的那些单选按钮有任何联系吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多