Salut à tous, j'essaye d'ajouter une étiquette à ma grille en utilisant le code suivant:
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
Cependant, je ne vois jamais rien sur la grille après avoir appuyé sur le bouton ... que me manque-t-il?
J'ai corrigé cela en nommant l'autre grille. Je n’ai jamais nommé la grille et c’est pourquoi le .Children.Add n’ajouterait jamais à la grille. J'ai essayé mainGrid.Children.Add (mainGrid est le nom de ma grille parente) et jetterait toujours une erreur car il s'agissait de la grille inside dont elle avait besoin pour cette partie.
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
Si vous devez ajouter un bouton ou une étiquette (il suffit de changer le bouton en étiquette) dans une grille, vous pouvez utiliser ceci:
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());
}
et 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>
Dans le code affiché, vous n’ajoutez jamais la nouvelle grille à une fenêtre ou à un contrôle d’une fenêtre.
gride est le nom de ma grille dans la fenêtre dynamique Form.xaml. il crée un bouton et l’ajoute à la grille, puis dans l’événement clic-clic il crée une étiquette en cliquant sur le bouton.
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);
}
}