【问题标题】:How to add event handler programmatically in WPF like one can do in Winform如何像在 Winform 中那样以编程方式在 WPF 中添加事件处理程序
【发布时间】:2011-06-07 11:53:25
【问题描述】:

这条winform指令相当于什么:

this.button1.Click += new System.EventHandler(this.button1_Click);

在 WPF 中?

更新:也适用于滑块。我应该声明什么命名空间?

我的意思是不要使用 XAML。

【问题讨论】:

    标签: c# wpf winforms


    【解决方案1】:

    这样的……

    this.btnTest.Click+=new RoutedEventHandler(btnTest_Click);
    

    【讨论】:

    • 其实也需要滑块。似乎与按钮不同
    【解决方案2】:

    试试这个:

     button1.AddHandler(Button.ClickEvent, new RoutedEventHandler(button1_Click));
    

    那么你必须创建一个这样的函数

    void button1_Click(object sender, RoutedEventArgs e)
        {
            throw new NotImplementedException();
        }
    

    【讨论】:

      【解决方案3】:

      如果您从 XAML 端添加新事件,IDE 会为您完成大部分工作。

      例如,如果您键入

      <Button Name="button1" Click=
      

      然后 IDE 将弹出一个下拉列表,其中包含您当前创建的所有事件。

      您可以选择以前创建的事件之一,或通过选择“新事件处理程序”来创建一个新事件

      如果您选择“New Event Handler”,那么 VS 会自动在 form.xaml.cs C# 代码隐藏中为您添加骨架。您只需在已创建的骨架中添加您希望单击事件执行的任何操作即可。

      希望这会有所帮助!

      【讨论】:

      • 是的,但它有助于像 OP 这样的人真正了解 UI 抽象层崩溃时的工作原理。
      • @Ed Swangren,这绝对是真的,上面的技术正是我在我的小编程经验中一直使用的技术,它还没有失败,所以我一直在努力:)跨度>
      • 当然,我会这样做,因为我知道事情在幕后是如何运作的。不幸的是,抽象最适合能看穿它们的人使用;)
      • 我不想为此使用 xaml,所以我的问题。
      【解决方案4】:

      WPF 不是一种新语言,也就是说,它是完全相同的概念。唯一可能改变的是委托类型。所以,是的,你会这样做。

      【讨论】:

      • 对我来说似乎不是这样。例如按钮和滑块看起来不像winform中的相似。仍在为滑块寻找正确的语法。
      • 不是语法问题;无论您的 UI API 是 WinForms 还是 WPF,您都在使用 C#。您可能只是没有分配正确的委托类型。它有助于告诉我们您收到什么错误。
      • @Ed Swangren,但是从 Winforms 到 WPF 的某些库不是略有不同吗?我知道只是在 winforms 和 Silverlight 中编程,虽然它确实都是 C# 代码隐藏,但对于完全相同的任务,语法/属性名称是不同的。不过,WPF 可能会有所不同。不过,我认为这三个都使用了稍微不同的库。我可能错了。
      • 您将语法与 API 混淆了。语法由语言规范定义。是的,图书馆是不同的,这就是我上面所说的。
      • @Ed Swangren,啊,好吧,对不起,我误解了你的意思
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多