c# - 如何在不使用 Loop 的情况下更改 List<UIControl> 中控件的属性?

标签 c# wpf list loops

我有以下代码,其中单击事件会动态地为 WrapPanel 创建额外的 Canvas,并且每个 Canvas 都包含一个 TextBox 和一个 Button。单击一个 Canvas 上的 Button 后,TextBox.Text 和 Button.Content 从“Foo”变为“Jesus”。

下面的代码可以工作,但并不理想。因为每个属性更改(“Foo”到“Jesus”),我必须运行一个循环。我必须运行两个循环才能更改 TextBox 和 Button 上的文本。是否有直接的方法来更改属性而不是循环? 我的实际应用程序在 Canvas 中包含 30 多个控件,我不想每次运行 30 多个循环只是为了更改一些文本。

List<Canvas> cvList = new List<Canvas>();
List<TextBox> tbList = new List<TextBox>();
List<Button> FooList = new List<Button>();
WrapPanel wp = new WrapPanel();

private void createbtn1_Click(object sender, RoutedEventArgs e)
{            
    Canvas cv = new Canvas();
    StackPanel sp = new StackPanel();
    TextBox tb = new TextBox();
    Button Foo = new Button();

    sp.Orientation = Orientation.Vertical;
    sp.Children.Add(tb);
    sp.Children.Add(Foo);
    cv.Children.Add(sp);
    wp.Children.Add(cv);
    cvList.Add(cv);
    tbList.Add(tb);
    FooList.Add(Foo);

    cv.Width = 100;
    cv.Height = 100;

    tb.Text = "#" + (cvList.IndexOf(cv)+1);
    tb.Width = 50;
    tb.Height = 30;

    Foo.Content = "Foo";
    Foo.Click += destroy_Click;
}

private void Foo_Click(object sender, RoutedEventArgs e)
{
    Button b = sender as Button;
    var bIndex = FooList.IndexOf(b);


    foreach (TextBox t in tbList)
    {
        if (tbList.IndexOf(t) == bIndex)
        {
            t.Text = "Jesus";


           }
        }
    foreach (Button f in FooList)
    {
        if (FooList.IndexOf(t) == bIndex)
        {
            t.Content = "Jesus";
         }
    }
}

最佳答案

只需按索引访问文本框并直接设置按钮的内容:

if(bIndex < tbList.Count && bIndex != -1)
    tbList[bIndex].Text = "Jesus";
if(b != null && bIndex != -1)
    b.Content = "Jesus";

关于c# - 如何在不使用 Loop 的情况下更改 List<UIControl> 中控件的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5537472/

相关文章:

c# - 如何在 C# 中为控制台 writeline 中的字符串保留一定数量的字母

c# - 如何提示用户他们可以滚动?

javascript - []在javascript中意味着什么以及如何从C#返回它

java - 在 java 中使用 Arrays.asList 的协方差?

python - Python中列表,序列和切片之间的区别?

java - ArrayList<Number> 是什么意思?

c# - 在 MVC 应用程序中使用 Webmatrix.Database Helper 的优点和缺点

c# - Entity Framework 中 DataGrid (WPF) 的优雅过滤

c# - WPF 窗口位置绑定(bind)

wpf - DevExpress Barbuttonitem与caliburn micro一起