C# 按钮保存点击获取 MaintenanceMetrics() 下所有控件的值 - 代码示例
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;
// 处理数据
// ...
}
代码说明:
- 获取内部 Grid: 使用
(Grid)((StackPanel)((Button)sender).Parent).Parent获取包含所有输入控件的 Grid。 - 获取 TextBox 值: 循环遍历 Grid 内的 StackPanel,然后使用
OfType<TextBox>()获取每个 StackPanel 中的 TextBox,并将它们的 Text 属性值添加到values列表中。 - 获取 ComboBox 值: 使用
FindName()方法通过名称获取 ComboBox 控件,然后获取其 Text 属性值。 - 处理数据: 您可以根据实际需要将获取的
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;
}
原文地址: https://www.cveoy.top/t/topic/knbm 著作权归作者所有。请勿转载和采集!