如何通过c#获取组中选中的单选按钮
How to get selected radio button in group via c#
如何通过 c# 获取位于堆栈面板(父容器)内的选定单选按钮控件的索引而不是单选按钮的边框?
这是我搜索和尝试后得到的结果
for (int i = 0; i < this.selective.Children.Count; i++)
{
if (this.selective.Children[i].GetType().Name == "RadioButton")
{
RadioButton radio = (RadioButton)this.selective.Children[i];
if ((bool)radio.IsChecked)
{
//get checked indes name
}
}
}
但是我在边框内有单选按钮,所以如何实现相同的效果
这是我的 xaml
<StackPanel Visibility="Collapsed" x:Name="selective" HorizontalAlignment="Left" VerticalAlignment="Top" Width="462" >
<Border Margin="20,0,20,0" Grid.Row="2" BorderThickness="2" BorderBrush="Black" >
<RadioButton GroupName="main1" x:Name="radio1" Foreground="#FF030303" Background="#FF0075A9" />
</Border>
<Border Margin="20,0,20,0" Grid.Row="2" BorderThickness="2" BorderBrush="Black" >
<RadioButton GroupName="main1" x:Name="radio2" Foreground="#FF030303" Background="#FF0075A9" />
</Border>
....
那么如何知道选中了哪个?
我想你可以尝试类似的方法:
foreach (var radioButton in selective.Children.OfType<Border>().Select(b => b.Child).OfType<RadioButton>())
{
if (((RadioButton)radioButton).IsChecked ?? false)
{
//Do stuff
}
}
更新答案
这是获取 RadioButton
的索引和名称的方法:
var radioButtons = selective.Children.OfType<Border>().Select(b => b.Child).OfType<RadioButton>();
foreach (var radioButton in radioButtons)
{
if (radioButton.IsChecked ?? false)
{
var name = radioButton.Name;
var index = radioButtons.ToList().IndexOf(radioButton);
}
}
用main1
代替this
for (int i = 0; i < main1.selective.Children.Count; i++)
{
if (main1.selective.Children[i].GetType().Name == "RadioButton")
{
RadioButton radio = (RadioButton)main1.selective.Children[i];
if ((bool)radio.IsChecked)
{
//get checked indes name
}
}
}
如何通过 c# 获取位于堆栈面板(父容器)内的选定单选按钮控件的索引而不是单选按钮的边框?
这是我搜索和尝试后得到的结果
for (int i = 0; i < this.selective.Children.Count; i++)
{
if (this.selective.Children[i].GetType().Name == "RadioButton")
{
RadioButton radio = (RadioButton)this.selective.Children[i];
if ((bool)radio.IsChecked)
{
//get checked indes name
}
}
}
但是我在边框内有单选按钮,所以如何实现相同的效果
这是我的 xaml
<StackPanel Visibility="Collapsed" x:Name="selective" HorizontalAlignment="Left" VerticalAlignment="Top" Width="462" >
<Border Margin="20,0,20,0" Grid.Row="2" BorderThickness="2" BorderBrush="Black" >
<RadioButton GroupName="main1" x:Name="radio1" Foreground="#FF030303" Background="#FF0075A9" />
</Border>
<Border Margin="20,0,20,0" Grid.Row="2" BorderThickness="2" BorderBrush="Black" >
<RadioButton GroupName="main1" x:Name="radio2" Foreground="#FF030303" Background="#FF0075A9" />
</Border>
....
那么如何知道选中了哪个?
我想你可以尝试类似的方法:
foreach (var radioButton in selective.Children.OfType<Border>().Select(b => b.Child).OfType<RadioButton>())
{
if (((RadioButton)radioButton).IsChecked ?? false)
{
//Do stuff
}
}
更新答案
这是获取 RadioButton
的索引和名称的方法:
var radioButtons = selective.Children.OfType<Border>().Select(b => b.Child).OfType<RadioButton>();
foreach (var radioButton in radioButtons)
{
if (radioButton.IsChecked ?? false)
{
var name = radioButton.Name;
var index = radioButtons.ToList().IndexOf(radioButton);
}
}
用main1
代替this
for (int i = 0; i < main1.selective.Children.Count; i++)
{
if (main1.selective.Children[i].GetType().Name == "RadioButton")
{
RadioButton radio = (RadioButton)main1.selective.Children[i];
if ((bool)radio.IsChecked)
{
//get checked indes name
}
}
}