C# 每次单击按钮后更改图元的可见性
我有一组XAML元素,如下所示:C# 每次单击按钮后更改图元的可见性,c#,xaml,windows-phone-8.1,C#,Xaml,Windows Phone 8.1,我有一组XAML元素,如下所示: <ComboBox x:Name="comB1" HorizontalAlignment="Left" Margin="244,90,0,0" VerticalAlignment="Top" Width="130" Height="48" Visibility="Collapsed"> <ComboBox x:Name="comB2" HorizontalAlignment="Left" Margin="244,180,0,0" Vertica
<ComboBox x:Name="comB1" HorizontalAlignment="Left" Margin="244,90,0,0" VerticalAlignment="Top" Width="130" Height="48" Visibility="Collapsed">
<ComboBox x:Name="comB2" HorizontalAlignment="Left" Margin="244,180,0,0" VerticalAlignment="Top" Width="130" Height="48" Visibility="Collapsed">
<ComboBox x:Name="comB3" HorizontalAlignment="Left" Margin="244,270,0,0" VerticalAlignment="Top" Width="130" Height="48" Visibility="Collapsed">
<Button Content="+" HorizontalAlignment="Left" Margin="171,224,0,0" VerticalAlignment="Top" Height="51" Width="59" Click="Button_Click"/>
每次单击此+
按钮后,我想将一个组合框的可见性
更改为可见
--在类的作用域中声明变量
int numOfVisibleCbx = 0;
int numOfVisibleCbx = 0;
--点击按钮
if(numOfVisibleCbx == 0)
comB1.Visibility = Visibility.Visible;
else if(numOfVisibleCbx == 1)
comB2.Visibility = Visibility.Visible;
else if(numOfVisibleCbx == 2)
comB3.Visibility = Visibility.Visible;
numOfVisibleCbx++;
hideAll();
if(numOfVisibleCbx == 0)
comB1.Visibility = Visibility.Visible;
else if(numOfVisibleCbx == 1)
comB2.Visibility = Visibility.Visible;
else if(numOfVisibleCbx == 2){
comB3.Visibility = Visibility.Visible;
numOfVisibleCbx = 0;
}
numOfVisibleCbx++;
如果您想隐藏其他cbx,那么
这里有一个技巧:
--在类的作用域中声明变量
int numOfVisibleCbx = 0;
int numOfVisibleCbx = 0;
--作用
void hideAll()
{
comB1.Visibility = Visibility.Hidden;
comB2.Visibility = Visibility.Hidden;
comB3.Visibility = Visibility.Hidden;
}
--点击按钮
if(numOfVisibleCbx == 0)
comB1.Visibility = Visibility.Visible;
else if(numOfVisibleCbx == 1)
comB2.Visibility = Visibility.Visible;
else if(numOfVisibleCbx == 2)
comB3.Visibility = Visibility.Visible;
numOfVisibleCbx++;
hideAll();
if(numOfVisibleCbx == 0)
comB1.Visibility = Visibility.Visible;
else if(numOfVisibleCbx == 1)
comB2.Visibility = Visibility.Visible;
else if(numOfVisibleCbx == 2){
comB3.Visibility = Visibility.Visible;
numOfVisibleCbx = 0;
}
numOfVisibleCbx++;
int-ComboNO=0;
私有无效按钮\u单击(对象发送者,System.Windows.RoutedEventArgs e)
{
ComboNO++;
for(int i=0;i
此解决方案适用于任何数量的组合框。试试这个:
int num = 1;
private void Button_Click(object sender, RoutedEventArgs e)
{
if (num <= ComboCounts)//ComboCounts is count of your ComboBoxes
{
((ComboBox)this.FindName("comB" + num)).Visibility = Visibility.Visible;
num++;
}
}
int num=1;
私有无效按钮\u单击(对象发送者,路由目标e)
{
如果(num尝试一下:
public MainWindow()
{
InitializeComponent();
_comBs =
this
.Root
.Children
.OfType<ComboBox>()
.Where(x => x.Name.StartsWith("comB"))
.OrderBy(x => int.Parse(x.Name.Substring("comB".Length)))
.ToArray();
}
private ComboBox[] _comBs = null;
private int _comB_index = -1;
private void Button_Click(object sender, RoutedEventArgs e)
{
_comB_index++;
for (var i = 0; i < _comBs.Length; i++)
{
_comBs[i].Visibility = i == _comB_index % _comBs.Length
? Visibility.Visible
: Visibility.Collapsed;
}
}
public主窗口()
{
初始化组件();
_梳子=
这
根
儿童
第()类
.Where(x=>x.Name.StartsWith(“梳”))
.OrderBy(x=>int.Parse(x.Name.Substring(“comB.Length”))
.ToArray();
}
专用组合框[]_comBs=null;
私有int_comB_索引=-1;
私有无效按钮\u单击(对象发送者,路由目标e)
{
_comB_索引++;
对于(变量i=0;i<\u梳长度;i++)
{
_梳[i]。可见性=i==\u梳\u索引%\u梳.Length
?可视性。可见
:能见度。倒塌;
}
}
您必须用容器元素替换this.Root
我已经测试过这个解决方案,它很有效。你想每次更改同一个组合框的可见性,还是显示不同的组合框?你能澄清一下你是想让一个组合框可见,但隐藏以前的组合框,还是依次让每个组合框可见吗?是的,这很好。但是如果有30个组合框,我就必须写60-70行。有可能吗易变的answers@Mr.lock-您需要在问题中包含此详细信息。当然,如果有许多组合框,那么这将是一个问题,但哪里有问题,那么也有一个解决方案。我们可以做的是在“+”上创建一个包装面板并在其中动态添加组合框单击。此外,您可以将这些组合框的引用存储在列表中,这样,如果您需要对它们进行操作,就可以很容易地完成操作。这个“RootElement”@Mr.lock是什么?它应该是包含组合框的任何元素。