每次单击按钮后更改元素的可见性

本文关键字:元素 可见性 单击 按钮 | 更新日期: 2023-09-27 18:04:41

我有一组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" 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"/>

每次点击+按钮后,我想将一个ComboBoxVisibility更改为visible

每次单击按钮后更改元素的可见性

此解决方案适用于任何ComboBoxes计数。试试这个:

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 ComboNO = 0;
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
     ComboNO++;
     for (int i = 0; i < ComboCount; i++)
        if (ComboNO == i)
          foreach (FrameworkElement item in RootElement.Children)
             if (item.Name == "comB" + i) item.Visibility = Visibility.Visible;
}

这里有一个技巧:

——在类

的作用域中声明一个变量
int numOfVisibleCbx = 0;

—on按钮点击

if(numOfVisibleCbx == 0)
      comB1.Visibility = Visibility.Visible;
else if(numOfVisibleCbx == 1)
      comB2.Visibility = Visibility.Visible;
else if(numOfVisibleCbx == 2)
      comB3.Visibility = Visibility.Visible;
numOfVisibleCbx++;

如果您想隐藏其他CBX,则

这里有一个技巧:

——在类

的作用域中声明一个变量
int numOfVisibleCbx = 0;

——功能

void hideAll()
{
     comB1.Visibility = Visibility.Hidden;
     comB2.Visibility = Visibility.Hidden;
     comB3.Visibility = Visibility.Hidden;
}

—on按钮点击

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++;

试一试:

    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;
        }
    }

您必须将this.Root替换为您的容器元素。

我已经测试了这个解决方案,它是有效的。