我需要在表单上使用响应式网格(单元格可以单击),应该使用什么控件?

时间:2016-11-10 10:29:10

标签: c# .net wpf winforms

我需要在Form上显示一个网格,显示为32个32个单元格,每个单元格都可以单击以执行某些操作(如Windows日历应用程序)。我认为按钮和面板,但这将是1024控制。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

这是在WPF中使用按钮创建响应式网格的方法:

使用GridLength(1, GridUnitType.Star)

创建响应能力

MainWindow.xaml.cs

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        for (int x = 0; x < 32; x++)
        {
            buttonGrid.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1, GridUnitType.Star)
            });
            buttonGrid.RowDefinitions.Add(new RowDefinition
            {
                Height = new GridLength(1, GridUnitType.Star)
            });

            for (int y = 0; y < 32; y++)
            {
                var bt = new Button();
                bt.Content = x + "" + y;
                Grid.SetRow(bt, x);
                Grid.SetColumn(bt, y);
                buttonGrid.Children.Add(bt);
                bt.Click += Bt_Click;
            }
        }
    }

    private void Bt_Click(object sender, RoutedEventArgs e)
    {
        Button bt = (Button)sender;
        bt.Background = Brushes.Black;
    }
}

<强> MainWindow.xaml

<Grid Name="buttonGrid"></Grid>

请注意调整大小会很慢。