[英]Getting list of checked radiobuttons in .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。
PS我是C#的新手-具有Java / C / C ++ / Python的经验
我利用以下代码将内容分别投射到新的groupbox和stackpanel中。
if (child is GroupBox)
{
if ((child as GroupBox).Content is StackPanel)
{
StackPanel d = (StackPanel)((GroupBox)child).Content;
}
}
这使我可以将内容转换为控件的本地副本。 可能不是最好的方法-老实说,我敢肯定这是非常低效的。 解决了问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.