C# 如何使用程式碼新增控制元件及控制元件事件
阿新 • • 發佈:2021-10-26
通過觸發介面某個控制元件,實現新增控制元件,併為其新增事件函式。
1.首先簡單設計一下介面:
添加了Click
事件
<Window x:Class="WpfApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApp" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <ScrollViewer VerticalScrollBarVisibility="Auto"> <StackPanel Name="addButtonSp" Margin="5"> <Button FontSize="20" Foreground="Blue" Click="OnButtonClick">在視窗加入按鈕</Button> </StackPanel> </ScrollViewer> </Window>
2.在程式碼部分,簡單設計一下控制元件屬性
就是在點選上面Button
按鈕時,介面自動新增一個按鈕
private void OnButtonClick(object sender, RoutedEventArgs e) { Button btn = new Button(); btn.Background = Brushes.LightBlue; btn.Foreground = Brushes.Yellow; btn.Height = 50; btn.Content = "按鈕"; btn.Click += new RoutedEventHandler(mes); addButtonSp.Children.Add(btn); }
重點來了,
btn.Click += new RoutedEventHandler(mes);
這行程式碼,就是用來指定所新增的button
控制元件的點選事件,必須要用RoutedEventHandler()
,其次()
裡面是被呼叫的事件函式,請往下看:
private void mes(object sender, RoutedEventArgs e)
,注意引數寫法
private void mes(object sender, RoutedEventArgs e) { MessageBoxResult a = MessageBox.Show("你點選了?", "Tip",MessageBoxButton.YesNoCancel,MessageBoxImage.Error); if (a == MessageBoxResult.Yes) { MessageBox.Show("你又點選了?", "haha", MessageBoxButton.OK, MessageBoxImage.Exclamation); } }
這部分的全部程式碼
/// <summary>
/// MainWindow.xaml 的互動邏輯
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void OnButtonClick(object sender, RoutedEventArgs e)
{
Button btn = new Button();
btn.Background = Brushes.LightBlue;
btn.Foreground = Brushes.Yellow;
btn.Height = 50;
btn.Content = "按鈕";
btn.Click += new RoutedEventHandler(mes);
addButtonSp.Children.Add(btn);
}
private void mes(object sender, RoutedEventArgs e)
{
MessageBoxResult a = MessageBox.Show("你點選了?", "Tip",MessageBoxButton.YesNoCancel,MessageBoxImage.Error);
if (a == MessageBoxResult.Yes)
{
MessageBox.Show("你又點選了?", "haha", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
else if(a == MessageBoxResult.No)
{
this.Close();
}
}
3.結果
a.啟動介面
b.瘋狂加入按鈕
c.隨機點選一個按鈕
新增button控制元件,再通過此控制元件呼叫其它函式,成功了O(∩_∩)O哈哈~
花絮:
其實,在實驗二 圖層操作.pdf
中,老師給的程式碼就用了這個程式碼(>‿◠)✌
Collection:因為這些東西是非常簡單的。不要抱怨自己學不會,那是因為你沒有足夠用心。