Tag: events

默认事件添加/删除实现

我想在事件处理程序添加或删除事件时实现一些额外的逻辑。 我知道.net中的默认实现最近发生了变化。 我想让我的实现尽可能接近默认实现。 任何人都可以指出/提供一些显示compliler如何实现事件的东西?

在对象初始化期间添加事件处理

我需要将某种类型的实例(将在此刻创建)传递给方法。 这种类型提供了我想订阅的几个事件,所以我的代码如下所示: var instance = new Instance(); instance.OnEvent1 += (sender, args) => { DoThis(); DoThat(); } instance.OnEvent2 += (sender, args) => DoThisToo(); instance.OnEvent3… MyMethod(instance); 现在,是否可以在初始化期间添加处理程序? 所以我可以这样写: MyMethod((MyType)instance => { instance.OnEvent1 += (sender, args) => { DoThis(); DoThat(); } instance.OnEvent2… }); 当然,由于美容原因,这仅是期望的。 我喜欢我的代码小而且可读。

将枚举元素作为事件参数传递给C#

是否可以将Enum元素作为事件参数传递? 假设我有…… public class Letters { public delegate void StateChangedEventHandler(object sender, EventArgs e); public event StateChangedEventHandler StateChanged; public AbcState state = AbcState.Aaa; public AbcState State { get{return this.state;} set { this.state = value; this.OnStateChanged(); } } public enum AbcState { Aaa, Bbb, Ccc } protected virtual void OnStateChanged() { StateChanged?.Invoke(this, State); } 看看我如何尝试将枚举元素作为事件参数传递? 现在,我通常会创建一个类并扩展EventArgs,然后我就能够传递类本身。 我知道我可以在这里做同样的事情,创建一个扩展EventArgs的不同类,然后在类中创建枚举,字段和属性。 […]

SelectedIndexChanged不起作用!

我的代码: *的.aspx: * .aspx.cs: protected void Page_Load(object sender, EventArgs e) { CountryList.SelectedIndexChanged += new EventHandler(CountryList_SelectedIndexChanged); … } protected void CountryList_SelectedIndexChanged(object sender, EventArgs e) { LoadCityList(CountryList, CityList); } 但这不起作用。

如何将事件处理程序委托转换为具有不同签名的委托

我写的代码实际上是一个WPF行为,用于从网格控件中获取所选项(SelectedItems,我们知道,它不是一个可绑定的属性)。 我实际上正在使用Telerik RadGridView但我希望行为对于任何具有SelectionChanged事件的内容都是通用的。 但是,不同的控件具有SelectionChanged事件处理程序的不同签名(RadGridView使用Telerik.Windows.Controls.SelectionChangeEventArgs而标准GridView使用System.Windows.Controls.SelectionChangedEventArgs)。 我们可以肯定的一件事是事件args将派生自EventArgs(实际上我们可以确定它将从RoutedEventArgs派生)。 但是,虽然我可以编写一个通用事件处理程序,它将RoutedEventArgs作为其第二个参数,并且我可以使用reflection来获取SelectionChangedEvent的EventInfo,但是我不能在不使用事件的精确签名的情况下将处理程序挂钩到事件handler – 在本例中是RadGridView处理程序。 这是我的代码。 我已经包含了所有内容,但重要的是SelectItemPropertyChanged,它是DependencyObject PropertyChangedCallback,它尝试将事件处理程序SelectionChangedHandler连接到SelectionChangedEvent。 (SelectionChangedHandler中的代码与问题无关,但我已经把它留在了,所以我很清楚我在做什么)。 public static class SelectedItemsChangedBehaviour{ public static readonly DependencyProperty SelectItemsProperty = DependencyProperty.RegisterAttached(“SelectItems”, typeof(bool), typeof(SelectedItemsChangedBehaviour), new FrameworkPropertyMetadata(false, new PropertyChangedCallback(SelectItemPropertyChanged))); public static void SetSelectItems(DependencyObject dependencyObject, bool selectItems) { dependencyObject.SetValue(SelectItemsProperty, selectItems); } public static bool GetSelectItems(DependencyObject dependencyObject) { return (bool)dependencyObject.GetValue(SelectItemsProperty); } private static void SelectItemPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs […]

c#:队列的入队事件

我是活动和代表的新手。 你能否指出我为Queue 类型的对象实现Enqueued事件的正确方向? 我正在使用C#和.Net 4.0 谢谢

保持事件Longlistselector

HEJ 我想创建一个标准的holdevent。 当您持有元素时,会出现一些您可以选择的选项,如新列表。 你是如何创造这个的,它只是简单地用弹出窗口完成还是有更聪明的方法? 额外 找到答案后,请参阅下面的答案,一些不错的信息是: 将上下文创建放在hold事件中。 然后,您可以根据项目更改为不同的上下文菜单。 您可以通过以下方式获取所持有的项目 private void StackPanel_Hold(object sender, GestureEventArgs e) { ItemViewModel itemViewModel = (sender as StackPanel).DataContext as ItemViewModel; string t = itemViewModel.LineOne; } 和 一个易于实现的好链接也是下面的youtube链接,在这里复制: Youtube

OnCheckedChanged事件根本没有在GridView中触发

我在TemplateField中有一个带有asp CheckBox的GridView。 TemplateField定义如下: 当我在MyCheckChangedMethod中使用断点运行我的Web项目并单击该复选框时没有任何反应。 断点没有被击中。 我的Visual Studio调试器正在运行。 另外,我的页面定义中有AutoEventWireup = True,所以我不必手动挂钩事件。 我以前从来没有遇到过这样做的问题。 我在同一页面上有一个按钮设置与点击事件完全相同的方式,断点得到了很好的打击。 有任何想法吗?

C#:SomeEvent + = Method和SomeEvent + = new Delegate(方法)之间的区别是什么

可能重复: 我应该创建一个新的代理实例吗? 嗨,我已经尝试过搜索这个问题的答案了,但是我真的不知道要搜索哪些术语,并且没有任何网站建议的问题是相关的。 我确信这之前一定已经得到了解答。 基本上,有人可以告诉我C#中这两行之间的区别是什么: SomeEvent += SomeMethod SomeEvent += new SomeDelegate(SomeMethod) 例如: DataContextChanged += App_DataContextChanged; DataContextChanged += new DependencyPropertyChangedEventHandler(App_DataContextChanged); 他们似乎都做同样的事情。

C#:需要我的一个类来触发另一个类中的事件来更新文本框

总共n00b到C#和事件虽然我已经编程了一段时间。 我有一个包含文本框的类。 此类创建从串行端口接收帧的通信管理器类的实例。 我这一切都很好。 每次接收到一个帧并提取其数据时,我想要一个方法在我的类中使用文本框运行,以便将此帧数据附加到文本框。 所以,没有发布我的所有代码,我有我的表单类… public partial class Form1 : Form { CommManager comm; public Form1() { InitializeComponent(); comm = new CommManager(); } private void updateTextBox() { //get new values and update textbox } . . . 我有我的CommManager课程 class CommManager { //here we manage the comms, recieve the data and parse the frame } […]