循环里面的TextBlock和TextBox叠在一起,是因为它们被放置在同一个Grid中,并且在循环中被添加到了相同的行和列位置。在每次循环中,都会创建一个新的TextBlock和TextBox,并将它们添加到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); 
            }  
        }
WPF Grid 循环创建 TextBlock 和 TextBox 重叠问题解决方法

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

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