【问题标题】:Only Two Radio Button Select只有两个单选按钮选择
【发布时间】:2018-10-27 04:42:06
【问题描述】:

我遇到了一个问题,我的单选按钮只有两个可以操作,但所有三个按钮的制作方式都相同。

不确定我是否遗漏了什么或什么。这两个执行得很好,第三个,没有那么多。

将其他按钮设置为 null 是我的一位同事的建议,但仍然没有。为简单起见,我将其淡化为用颜色更改窗口的背景。我对这种语言不是很熟悉,因此感谢您的帮助。

        private void Button_Click_1(object sender, RoutedEventArgs e)
    {
            RadioButton Green = new RadioButton();
            RadioButton Red = new RadioButton();
            RadioButton Blue = new RadioButton();
            Green.Content = "Green";
            Red.Content = "Red";
            Blue.Content = "Blue";
            LayoutRoot.Children.Add(Green);
            LayoutRoot.Children.Add(Blue);
            LayoutRoot.Children.Add(Red);
            Green.Margin = new Thickness(X, Y, 0, 0);
            Red.Margin = new Thickness(X, Y, 0, 0);
            Blue.Margin = new Thickness(X, Y, 0, 0);
            Green.Checked += delegate
            {
                Window.Background = Brushes.Green;
                Red = null;
                Blue = null;

            };
            Red.Checked += delegate
            {
                Window.Background = Brushes.Red;
                Green = null;
                Blue = null;
            };
            Blue.Checked += delegate
            {
                Window.Background = Brushes.Blue;
                Green = null;
                Red = null;
            };
    }

【问题讨论】:

  • 没有复制。请创建minimal reproducible example。顺便说一句,设置 Red = null; Green = null; 是无用的,并且可能会变得有害,如果在事件处理程序中使用这些捕获的局部变量来获取某些属性值

标签: c# wpf radio-button


【解决方案1】:

给你的单选按钮一个GroupName。确保它们具有相同的GroupName,然后它们将在组内互斥:

var button = new RadioButton();
button.GroupName = "SomeGroup";

更多详情请查看this教程。

另一个注意事项,我不知道你为什么在 Checked 处理程序中单击一个单选按钮时要创建其他单选按钮 null

【讨论】:

  • 感谢您的建议。我添加了组名,但仍然无法选择第三个单选按钮。将其他按钮设置为 null 的建议是我宿舍另一个孩子的建议。
  • @Christheyankee 为什么在选择其中一个按钮时将按钮设置为空?
  • 这是我宿舍的一个朋友建议的,最初不会这样做,它不在真实代码中。只是想表明我试过了
【解决方案2】:

好吧,事实证明按钮是不受约束的,所以它们的碰撞箱是重叠的。只需添加以下定义即可修复它:

Red.Height = 15;
Red.Width = 60;
Red.HorizontalAlignment = HorizontalAlignment.Left;
Red.VerticalAlignment = VerticalAlignment.Top;

【讨论】:

猜你喜欢
  • 2023-04-10
  • 1970-01-01
  • 2011-08-13
  • 2018-08-01
  • 2012-04-23
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 2017-06-28
相关资源
最近更新 更多