次のコードを使用してグリッドにラベルを追加しようとしています。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
Dim dynamicLabel As New Label()
Dim g As New Grid
dynamicLabel.Name = "NewLabel"
dynamicLabel.Content = "TEST"
dynamicLabel.Width = 240
dynamicLabel.Height = 30
dynamicLabel.Margin = New Thickness(0, 21, 0, 0)
dynamicLabel.Foreground = New SolidColorBrush(Colors.White)
dynamicLabel.Background = New SolidColorBrush(Colors.Black)
Grid.SetRow(dynamicLabel, 0)
Grid.SetColumn(dynamicLabel, 6)
g.Children.Add(dynamicLabel)
End Sub
ただし、ボタンを押した後、グリッドに何も表示されません...何が欠けていますか?
他のグリッドに名前を付けることでこれを修正しました。グリッドに名前を付けたことはありません。そのため、。Children.Addがグリッドに追加されることはありません。私はmainGrid.Children.Add(mainGridは私の親グリッドの名前です)を試しましたが、それはグリッドinsideであるため、常にエラーをスローしますこの部分に必要でした。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) //Handles Button1.Click
Dim dynamicLabel As new Label();
dynamicLabel.Name = "NewLabel";
dynamicLabel.Content = "TEST";
dynamicLabel.Width = 240;
dynamicLabel.Height = 30;
dynamicLabel.Margin = new Thickness(0, 21, 0, 0);
dynamicLabel.Foreground = new SolidColorBrush(Colors.White);
dynamicLabel.Background = new SolidColorBrush(Colors.Black);
Grid.SetRow(dynamicLabel, 0);
Grid.SetColumn(dynamicLabel, 0);
childGrid.Children.Add(dynamicLabel); //'<-changed to grid name in XAML properties
End Sub
グリッドにボタンまたはラベルを追加する必要がある場合(ボタンをラベルに変更するだけ)、これを使用できます。
internal void FillbtnSubCat(Grid grid)
{
var myDefinition = new ColumnDefinition();
var myButton = new Button();
Grid.SetColumn(myButton, count);
myButton.Margin = new Thickness(5, 10, 5, 25);
myButton.MinWidth = 30;
myButton.Content = count;
myButton.Click+= new RoutedEventHandler(Click1);
myDefinition.Width = new GridLength(68);
grid.ColumnDefinitions.Add(myDefinition);
grid.Children.Add(myButton);
count++;
}
void Click1(object sender, RoutedEventArgs e)
{
var myButton = sender as Button;
MessageBox.Show(myButton.GetHashCode().ToString());
}
およびXAML
<ListView Grid.Column="0" Margin="10,10,5,5" Grid.Row="1" Grid.ColumnSpan="2">
<Grid Name="Grid1" Height="100" Width="auto">
</Grid>
</ListView>
表示されているコードでは、ウィンドウ内のウィンドウ/コントロールに新しいグリッドを追加することはありません。
grideは、dynamicForm.xamlウィンドウでの私のグリッドの名前です。ボタンを作成してグリッドに追加し、ボタンをクリックしたときにボタンをクリックしてラベルを作成します。
public partial class DynamicForm : Window
{
Label lb = new Label();
public DynamicForm()
{
InitializeComponent();
Button dynamicButton = new Button();
dynamicButton.Content = "Click me";
Grid.SetRow(dynamicButton, 0);
Grid.SetColumn(dynamicButton, 0);
gride.Children.Add(dynamicButton);
dynamicButton.Click += button1_Click;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Label dynamicLabel = new Label();
dynamicLabel.Name = "NewLabel";
dynamicLabel.Content = "TEST";
dynamicLabel.Width = 240;
dynamicLabel.Height = 30;
dynamicLabel.Margin = new Thickness(0, 21, 0, 0);
dynamicLabel.Foreground = new SolidColorBrush(Colors.White);
dynamicLabel.Background = new SolidColorBrush(Colors.Black);
Grid.SetRow(dynamicLabel, 1);
Grid.SetColumn(dynamicLabel, 0);
gride.Children.Add(dynamicLabel);
}
}