WPF Grid 中循环创建 TextBlock 和 TextBox 重叠问题解决方案
// 创建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() { Height = GridLength.Auto }); grid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); grid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); grid.RowDefinitions.Add(new RowDefinition() {}); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition());
// 创建TextBlock
TextBlock textBlock = new TextBlock() { Text = '指标维护', HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center ,
FontSize = 25,
Foreground = Brushes.Blue
};
Grid.SetRow(textBlock, 0);
Grid.SetColumn(textBlock, 0);
Grid.SetColumnSpan(textBlock, 12);
grid.Children.Add(textBlock);
string[] strName = { ' IL', 'ISO', 'DIR' };
for (int i = 1; i <=3; i++)
{
for (int j = 0; j < 4; j++)
{
var textTitle = new TextBlock()
{
Margin =new Thickness(20,5,0,5),
FontSize = 17,
Foreground = Brushes.Blue,
Text = strName[i-1] +(j+1).ToString()+':',
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center
} ;
Grid.SetRow(textTitle, i);
Grid.SetColumn(textTitle, j);
grid.Children.Add(textTitle);
var text = new TextBox()
{
Margin = new Thickness(0, 5, 0, 5),
FontSize = 17,
Foreground = Brushes.Blue,
VerticalAlignment = VerticalAlignment.Center,
Width=80
};
Grid.SetRow(text, i);
Grid.SetColumn(text, (j + 1));
grid.Children.Add(text);
var textuit = new TextBlock()
{
Margin = new Thickness(0, 5, 0, 5),
FontSize = 17,
Foreground = Brushes.Blue,
Text = 'nm',
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center
};
Grid.SetRow(textuit, i);
Grid.SetColumn(textuit, (j+2));
grid.Children.Add(textuit);
}
}因为在循环中,每次都会创建一个新的 TextBlock 和 TextBox,它们的位置都是相同的,所以它们会叠在一起。要修改这个问题,可以在创建 TextBlock 和 TextBox 时,指定它们的位置,而不是使用循环来自动定位它们。可以使用 Grid.SetRow 和 Grid.SetColumn 来指定它们的行和列位置。
原文地址: https://www.cveoy.top/t/topic/knpE 著作权归作者所有。请勿转载和采集!