Практическое руководство. Добавление обработчика событий с помощью кода
В этом примере показано, как добавить обработчик событий в элемент с помощью кода.
Если вы хотите добавить обработчик событий в элемент XAML и при этом страница разметки, содержащая элемент, уже загружена, необходимо добавить обработчик с помощью кода. Кроме того, если вы создаете дерево элементов для приложения полностью с помощью кода и не объявляете какие-либо элементы с помощью XAML, можно вызвать определенные методы для добавления обработчиков событий в созданном дереве элементов.
Пример
В следующем примере на существующую страницу, изначально определяемую в XAML, добавляется новый Button. Файл кода программной части реализует метод обработчика событий, а затем добавляет этот метод в качестве нового обработчика событий в Button.
В примере C# используется оператор +=
для назначения обработчика событию. Это тот же оператор, который используется для назначения обработчика в модели обработки событий среды CLR. Microsoft Visual Basic не поддерживает этот оператор как средство добавления обработчиков событий. Вместо этого требуется один из двух способов:
Используйте метод AddHandler совместно с оператором
AddressOf
для создания ссылок на реализацию обработчика событий.Используйте ключевое слово
Handles
как часть определения обработчика событий. Этот метод не показан здесь; см. раздел Visual Basic и обработка событий WPF.
<TextBlock Name="text1">Start by clicking the button below</TextBlock>
<Button Name="b1" Click="MakeButton">Make new button and add handler to it</Button>
public partial class RoutedEventAddRemoveHandler {
void MakeButton(object sender, RoutedEventArgs e)
{
Button b2 = new Button();
b2.Content = "New Button";
// Associate event handler to the button. You can remove the event
// handler using "-=" syntax rather than "+=".
b2.Click += new RoutedEventHandler(Onb2Click);
root.Children.Insert(root.Children.Count, b2);
DockPanel.SetDock(b2, Dock.Top);
text1.Text = "Now click the second button...";
b1.IsEnabled = false;
}
void Onb2Click(object sender, RoutedEventArgs e)
{
text1.Text = "New Button (b2) Was Clicked!!";
}
Public Partial Class RoutedEventAddRemoveHandler
Private Sub MakeButton(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim b2 As Button = New Button()
b2.Content = "New Button"
AddHandler b2.Click, AddressOf Onb2Click
root.Children.Insert(root.Children.Count, b2)
DockPanel.SetDock(b2, Dock.Top)
text1.Text = "Now click the second button..."
b1.IsEnabled = False
End Sub
Private Sub Onb2Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
text1.Text = "New Button (b2) Was Clicked!!"
End Sub
Примечание.
Добавление обработчика событий на страницу XAML после начального анализа гораздо проще. В элементе объекта, куда требуется добавить обработчик событий, добавьте атрибут, соответствующий имени события, которое требуется обработать. Затем укажите значение этого атрибута в качестве имени метода обработчика событий, определенного в файле кода программной части страницы XAML. Дополнительные сведения см. в разделе XAML в WPF или Общие сведения о маршрутизированных событиях.
См. также
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по