在.net中获取选中的单选按钮列表

时间:2018-07-23 08:52:19

标签: c# .net

TLDR;寻找一种通过诸如此类的方式检索所有单选按钮的方法...(psudo)

    List<RadioButton> btn = new List<RadioButton>;
    btn = stackPanel.getAllRadioButtons()

我目前正在用C#构建一个小测验应用程序。我具有将所需的GUI元素添加到组框的功能。我想知道是否有任何方法可以遍历创建的元素(例如单选按钮)以查看已检查的元素。

这里是功能之一,以及如何将它们添加到窗口中。

    private void tfQ(string questionBody)
    {
        StackPanel questionPanel = new StackPanel{Orientation = Orientation.Vertical};
        questionPanel.Children.Add(new Label { Content = questionBody });
        GroupBox group = new GroupBox();
        RadioButton trueRadio = new RadioButton();
        trueRadio.Content = "True";
        RadioButton falseRadio = new RadioButton();
        falseRadio.Content = "False";
        questionPanel.Children.Add(trueRadio);
        questionPanel.Children.Add(falseRadio);
        group.Content = questionPanel;
        mainStack.Children.Add(group);


    }

构造函数:

    public quiz()
    {
        tfQ("This is a true/false question");
        Window w = new Window();
        w.Content = mainStack;
        w.Show();
    }

我发现了许多以C#脚本格式执行操作的方法

(使用控制功能...)

     var checkedButton = container.Controls.OfType<RadioButton>()
                                  .FirstOrDefault(r => r.Checked);

但是我还没有找到一种“程序化”的方式。我已经考虑过将void tfQ的类型更改为StackPanel,但这只能帮助我更轻松地遍历堆栈面板,尽管这只能部分解决我的问题-可以让我更轻松地遍历StackPanel,但是我仍然不知道如何在面板上获取RadioButtons。

P.S我是C#的新手-具有Java / C / C ++ / Python的经验

1 个答案:

答案 0 :(得分:0)

我利用以下代码将内容分别投射到新的groupbox和stackpanel中。

---
version: "3.4"

services:

zookeeper:
    image: "confluentinc/cp-zookeeper:latest"
    environment:
    ZOOKEEPER_CLIENT_PORT: 2181
    ZOOKEEPER_TICK_TIME: 2000
    extra_hosts:
      - "moby:127.0.0.1"

kafka:
    image: "confluentinc/cp-kafka:latest"
    environment:
    KAFKA_BROKER_ID: 1
    KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
    KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT"
    KAFKA_INTER_BROKER_LISTENER_NAME: "INSIDE"
    KAFKA_ADVERTISED_LISTENERS: "INSIDE://kafka:29092,OUTSIDE://localhost:50012"
    KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
    ports:
      - "50012:50012"
    extra_hosts:
      - "moby:127.0.0.1"
    depends_on:
      - zookeeper

这使我可以将内容投射到控件的本地副本中。可能不是最好的方法-老实说,我敢肯定这是非常低效的。解决了这个问题。