当我按下Add,多个事件在一个按钮下时创建一个提交按钮

时间:2015-05-25 16:09:43

标签: c# wpf

任何想法如何创建点击事件都会创建另一个具有不同点击事件的按钮?

我有一个使用EF的WPF应用程序。所以我被困在我需要按下按钮的部分"添加"这将冻结其他按钮,然后创建另一个按钮"提交"使用代码向表中添加数据。我已经尝试过msdn的一些建议,但它没有用。这是代码(以前在XAML中添加了一个名为b1的按钮):

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!!";
}

我甚至尝试过最明显的解决方案,只需在点击事件中直接创建一个带有点击事件的按钮。

2 个答案:

答案 0 :(得分:0)

我会建议另一种方法,然后立即将提交按钮放在你的xaml代码中,但要使它不可见并禁用。

然后在事件处理程序中,您只需将其显示并启用它。

您的事件处理程序处理提交,动态创建按钮,在表单中挂钩等等都可以避免,而且不必在运行时完成。

除非您有充分的理由,否则这将导致代码和可维护代码比原始方法更好。

答案 1 :(得分:-1)

我做了以下编码,它正在为我工​​作

private void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            Button oButton = new Button();
            oButton.Name = "btnMessage";
            oButton.Content = "Message Show";
            oButton.Height = 50;
            oButton.Width = 50;
            oButton.Click += new RoutedEventHandler(oButton_Click);
            //root is a stack panel
            root.Children.Insert(root.Children.Count, oButton);
            DockPanel.SetDock(oButton, Dock.Top);

        }

        void oButton_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Hello World !");
        }