#c# #wpf
#c# #wpf
Вопрос:
В приведенном ниже коде я создал новое окно, которое появляется, когда я нажимаю кнопку в главной форме. В окне у меня есть изображение и некоторый текст с кнопкой для закрытия окна. Как я могу закрыть только это окно в коде, лежащем в основе? Я пошел дальше и создал btn.Click = new RoutedEventHandler(btn_Click);
но мне нужно иметь возможность передать в окне некоторые инструкции, чтобы это было видно в этой функции. Есть ли способ проверить, нажата ли кнопка там, где я создаю окно и кнопку прагматично, чтобы я мог закрыть это окно?
Show_Dialog1_Click
это кнопка на главной форме.
вот код для окна и кнопки
private void Show_Dialog1_Click(object sender, RoutedEventArgs e)
{
Window wnd = new Window();
Grid grid = new Grid();
wnd.Height = 450;
wnd.Width = 450;
wnd.MinHeight = 450;
wnd.MinWidth = 450;
wnd.MaxHeight = 450;
wnd.MaxWidth = 450;
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(30) });
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(30) });
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(300) });
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(40) });
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(100) });
grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
wnd.Content = grid;
BitmapImage src = new BitmapImage();
src.BeginInit();
src.UriSource = new Uri("jimmy.jpg", UriKind.Relative);
src.EndInit();
Image i = new Image();
i.Source = src;
i.Stretch = Stretch.Uniform;
Button btn = new Button();
btn.Content = "Close";
btn.Height = 30;
btn.Width = 150;
btn.VerticalAlignment = VerticalAlignment.Bottom;
btn.HorizontalAlignment = HorizontalAlignment.Center;
//btn.Click = new RoutedEventHandler(btn_Click);
Label lblDialog = new Label();
lblDialog.Content = "Sample Dialog Box";
lblDialog.FontWeight = FontWeights.Bold;
lblDialog.Foreground = Brushes.Black;
lblDialog.Background = Brushes.LightBlue;
Label lblexample = new Label();
lblexample.Content = "This is an example of a standard dialog box component.";
lblexample.FontSize = 12;
Grid.SetRow(lblDialog, 0);
Grid.SetRow(lblexample, 1);
Grid.SetRow(i, 2);
Grid.SetRow(btn,3);
grid.Children.Add(lblDialog);
grid.Children.Add(lblexample);
grid.Children.Add(i);
grid.Children.Add(btn);
wnd.Owner = this;
wnd.ShowDialog();
}
Ответ №1:
btn.Click = (q,w) => wnd.Close();
Комментарии:
1. Это называется лямбда-выражением. Это означает, что это функция, которая принимает 2 аргумента (sender и EventArgs) с именами q и w.
2. Также, в отличие от обычных функций, он имеет доступ к любым локальным переменным, объявленным в родительской функции.
3. Еще раз спасибо, я не смог разобраться