1. 程式人生 > 其它 >C# 如何使用程式碼新增控制元件及控制元件事件

C# 如何使用程式碼新增控制元件及控制元件事件

通過觸發介面某個控制元件,實現新增控制元件,併為其新增事件函式。

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:因為這些東西是非常簡單的。不要抱怨自己學不會,那是因為你沒有足夠用心。