私は、他の場所で定義された2D配列に基づいて、ボタンを動的に追加したスタックパネルを持っています。基本的にボタンのグリッドが作成されますが、スタックパネルの子として追加されます。私ができる必要があるのは、列と行の番号に基づいて子ボタンを指定することです。ここにStackpanelがあります。WPF Stackpanelの子供の隣人を取得
<StackPanel Name="myArea" HorizontalAlignment="Center" VerticalAlignment="Center"/>
ここにいくつかのコードがあります。
Grid values = new Grid();
values.Width = 320;
values.Height = 240;
values.HorizontalAlignment = HorizontalAlignment.Center;
values.VerticalAlignment = VerticalAlignment.Center;
int x = valueBoard.GetLength(0);
int y = valueBoard.GetLength(1);
for (int i = 0; i < x; i++)
{
ColumnDefinition col = new ColumnDefinition();
values.ColumnDefinitions.Add(col);
}
for (int j = 0; j < y; j++)
{
RowDefinition row = new RowDefinition();
values.RowDefinitions.Add(row);
}
for (int i = 0; i < x; i++) for (int j = 0; j < y; j++)
{
Button button = new Button();
button.Content = "";
button.Click += ButtonClick;
button.MouseRightButtonUp += RightClick;
Grid.SetColumn(button, i);
Grid.SetRow(button, j);
values.Children.Add(button);
}
myArea.Children.Add(values);
ここで、ボタンをクリックすると、グリッド内のすべての隣接ボタンを非表示にしたいと思います。ここに私のクリックイベントです:
private void ButtonClick(object sender, RoutedEventArgs e)
{
int col = Grid.GetColumn((Button)sender);
int row = Grid.GetRow((Button)sender);
Button source = e.Source as Button;
source.Visibility = Visibility.Hidden;
}
がどのように私は、ButtonClick
で、col
とrow
値を持つネイバーボタンを非表示にしますか?これらの値を入力してネイバーのVisibility
プロパティを編集できるよりも、何らかのゲッターやセッターがありますか?
いくつかのゲームを作っていますか?はいの場合は、代わりにカスタムパネルを試してください。必要に応じてサンプルが見つかります。 –