2016-11-10 47 views
0

我需要在窗體上顯示一個網格,顯示爲32乘32個單元格,每個單元格可以單擊以執行一些操作(如Windows日曆應用程序)。我認爲按鈕和麪板,但這將是1024控件。任何更好的方法?我需要一個響應網格(單元格可以被點擊)的形式,應該使用什麼控制?

+1

wpf或winforms?一種有效的方法是讓一個面板監聽點擊事件,然後使用點擊位置來確定接下來會發生什麼。 – Skynet

+0

wpf或winform,無論有什麼方法可以解決這個問題。我需要這些單元格單獨行動,例如,顯示不同的顏色 –

+0

您可以使用「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)單元格的需求是什麼?它們包含什麼? –

回答

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> 

請注意,調整大小會很慢。

相關問題