private void But_Click(object sender, RoutedEventArgs e)
{
    // 获取内部Grid
    Grid innerGrid = (Grid)((StackPanel)((Button)sender).Parent).Parent;
    // 获取所有TextBox的值
    List<string> values = new List<string>();
    foreach (StackPanel stackPanel in innerGrid.Children)
    {
        foreach (TextBox textBox in stackPanel.Children.OfType<TextBox>())
        {
            values.Add(textBox.Text);
        }
    }
    // 获取ComboBox的值
    string indexName = ((ComboBox)innerGrid.FindName('indexName')).Text;
    // 处理数据
    // ...
}

代码说明:

  1. 获取内部 Grid: 使用 (Grid)((StackPanel)((Button)sender).Parent).Parent 获取包含所有输入控件的 Grid。
  2. 获取 TextBox 值: 循环遍历 Grid 内的 StackPanel,然后使用 OfType<TextBox>() 获取每个 StackPanel 中的 TextBox,并将它们的 Text 属性值添加到 values 列表中。
  3. 获取 ComboBox 值: 使用 FindName() 方法通过名称获取 ComboBox 控件,然后获取其 Text 属性值。
  4. 处理数据: 您可以根据实际需要将获取的 values 列表和 indexName 进行进一步处理。

完整代码:

private MaintenanceMetrics()
        {
            Closing += MaintenanceMetrics_Closing;

            // 创建Grid
            Grid grid = new Grid();
            grid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(70) });
            grid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
            grid.RowDefinitions.Add(new RowDefinition() {});

            // 创建TextBlock
            TextBlock textBlock = new TextBlock() { Text = '指标维护', HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center ,
                FontSize = 25,
                Foreground = Brushes.Blue
            };
            Grid.SetRow(textBlock, 0);
            grid.Children.Add(textBlock);

            // 创建内部Grid
            Grid innerGrid = new Grid();
            for (int i = 0; i < 5; i++)
            {
                innerGrid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
            }
            Grid.SetRow(innerGrid, 1);
            grid.Children.Add(innerGrid);

            // 创建四个StackPanel
            string[] strName = { '   IL', 'ISO', 'DIR' };

            for (int i = 0; i < 3; i++)
            {
                StackPanel stackPanel = new StackPanel() { Orientation = Orientation.Horizontal };
                for (int j = 0; j < 4; j++)
                {
                    stackPanel.Children.Add(new TextBlock()
                    {
                        Margin =new Thickness(20,5,0,5),
                        FontSize = 17,
                        Foreground = Brushes.Blue,
                        Text = strName[i] +(j+1).ToString()+':',
                        HorizontalAlignment = HorizontalAlignment.Center,
                        VerticalAlignment = VerticalAlignment.Center }                    );
                    stackPanel.Children.Add(new TextBox()
                    {
                        Margin = new Thickness(0, 5, 0, 5),
                        FontSize = 17,
                        Foreground = Brushes.Blue,
                        VerticalAlignment = VerticalAlignment.Center,
                        HorizontalAlignment = HorizontalAlignment.Center,
                        Width=80 
                    }                   );

                    stackPanel.Children.Add(new TextBlock()
                    {
                        Margin = new Thickness(0, 5, 0, 5),
                        FontSize = 17,
                        Foreground = Brushes.Blue,
                        Text = 'nm',
                        HorizontalAlignment = HorizontalAlignment.Center,
                        VerticalAlignment = VerticalAlignment.Center
                    }                   );
                } 
                Grid.SetRow(stackPanel, i);
                innerGrid.Children.Add(stackPanel);
            }
            StackPanel stackPanel2 = new StackPanel() { Orientation = Orientation.Horizontal,HorizontalAlignment=HorizontalAlignment.Right };
            stackPanel2.Children.Add(new TextBlock()
            {
                Margin = new Thickness(0, 5, 0, 5),
                FontSize = 17,
                Foreground = Brushes.Blue,
                Text = '指标名称:',
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment = VerticalAlignment.Center
            }                   );
           var comB=  new ComboBox()
            {
                Margin = new Thickness(0, 5, 0, 5),
                FontSize = 17,
                Foreground = Brushes.Blue, 
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment = VerticalAlignment.Center,
                Width=100,
                IsEditable=true,
 Name = 'indexName'
            } ;
            comB.SelectionChanged += ComB_SelectionChanged;
            stackPanel2.Children.Add(comB);


            var but = new Button()
            {
                Margin = new Thickness(50, 5, 50, 5),
                FontSize = 17,
                Foreground = Brushes.Blue,
                Content = '保 存',
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment = VerticalAlignment.Center
            };
            but.Click += But_Click;
            stackPanel2.Children.Add(but); 
            Grid.SetRow(stackPanel2, 3);
            innerGrid.Children.Add(stackPanel2);


            DataGrid data = new DataGrid()
            {
                Name = 'displayData',
                Margin = new Thickness(5),
                CanUserAddRows = false
            };
            Style cellStyle = new Style(typeof(DataGridCell));
            //Setter fontSizeSetter = new Setter(DataGridCell.FontSizeProperty, 16);
            //cellStyle.Setters.Add(fontSizeSetter);
            data.CellStyle = cellStyle;
            Style columnHeaderStyle = new Style(typeof(DataGridColumnHeader));
            //Setter columnHeaderFontSizeSetter = new Setter(DataGridColumnHeader.FontSizeProperty, 16);
            Setter columnHeaderFontWeightSetter = new Setter(DataGridColumnHeader.FontWeightProperty, FontWeights.Black);
            //columnHeaderStyle.Setters.Add(columnHeaderFontSizeSetter);
            columnHeaderStyle.Setters.Add(columnHeaderFontWeightSetter);
            data.ColumnHeaderStyle = columnHeaderStyle; 

            Grid.SetRow(data, 2);
            grid.Children.Add(data);
            // 设置Window属性
            this.Content = grid;
            this.WindowStartupLocation = WindowStartupLocation.CenterScreen;
            this.Title = '指标维护';
            this.Width = 900;
            this.Height = 600;
        }
C# 按钮保存点击获取 MaintenanceMetrics() 下所有控件的值 - 代码示例

原文地址: https://www.cveoy.top/t/topic/knbm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录