0
我需要在窗體上顯示一個網格,顯示爲32乘32個單元格,每個單元格可以單擊以執行一些操作(如Windows日曆應用程序)。我認爲按鈕和麪板,但這將是1024控件。任何更好的方法?我需要一個響應網格(單元格可以被點擊)的形式,應該使用什麼控制?
我需要在窗體上顯示一個網格,顯示爲32乘32個單元格,每個單元格可以單擊以執行一些操作(如Windows日曆應用程序)。我認爲按鈕和麪板,但這將是1024控件。任何更好的方法?我需要一個響應網格(單元格可以被點擊)的形式,應該使用什麼控制?
下面是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>
請注意,調整大小會很慢。
wpf或winforms?一種有效的方法是讓一個面板監聽點擊事件,然後使用點擊位置來確定接下來會發生什麼。 – Skynet
wpf或winform,無論有什麼方法可以解決這個問題。我需要這些單元格單獨行動,例如,顯示不同的顏色 –
您可以使用「TableLayoutPanel」或「DataGridView」。看[這個例子](http://stackoverflow.com/questions/33968993/how-to-create-a-magic-square-using-windows-forms)或[this one](http://stackoverflow.com/ question/38127389/can-datagridview-be-used-to-done-the-following-table-ui-in-winforms)單元格的需求是什麼?它們包含什麼? –