WPF C# GroupBox 控件

问题描述 投票:0回答:1
我目前需要使用组框获取文本框中的内容信息,这些文本框具有相同的前五个字符。我对 WPF C# 很陌生,并且阅读了一些关于需要使用网格作为组框中的控件在层中进行挖掘的文章,但只是想要更清晰的图片或更清晰的代码来执行此操作。

结构:

    组框
    • 网格
      • 网格
        • 堆栈面板
          • 文本框
在窗口窗体中我使用了这个,但想使用 WPF 做同样的事情:

for (int i = 0; i < (int)NudLengtht; i++) { if (!Byte.TryParse(((TextBox)GrpMessage.Controls.Find("TG_TxtData" + i.ToString(), true)[0]).Text, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out datat[i])) AddMessage(LstStatus, "Error converting data to send:" + ((TextBox)GrpMessage.Controls.Find("TG_TxtData" + i.ToString(), true)[0]).Text); }
    
c# wpf controls children groupbox
1个回答
0
投票
您可以使用

VisualTreeHelper

 类和递归方法来枚举特定类型的所有子级:

IEnumerable<TextBox> textBoxesInGroupBox = FindVisualChildren<TextBox>(theGroupBox); ... private static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject { if (depObj == null) yield return (T)Enumerable.Empty<T>(); for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) { DependencyObject child = VisualTreeHelper.GetChild(depObj, i); if (child == null) continue; if (child is T t) yield return t; foreach (T childOfChild in FindVisualChildren<T>(child)) yield return childOfChild; } }
示例 XAML 标记:

<GroupBox x:Name="theGroupBox"> <Grid> <Grid> <StackPanel> <TextBox Text="a" /> <TextBox Text="b" /> <TextBox Text="c" /> </StackPanel> </Grid> </Grid> </GroupBox>
    
© www.soinside.com 2019 - 2024. All rights reserved.