1
我有一个信息类,它有以下事件。System.EventHandler转换错误
public delegate void GroupNameChangedHandler(string groupName);
[field: NonSerialized]
public event GroupNameChangedHandler GroupNameChanged;
另一个类是注册到该事件。它似乎工作正常,但昨天我们的客户之一提到应用程序正在抛出一些异常,以下是该错误的堆栈跟踪。我不确定客户端的机器或应用程序出了什么问题。这对其他几乎50个用户来说效果很好。
Object of type 'System.EventHandler' cannot be converted to type 'EZOMS.OrderEntry.PairsOrderInfo+GroupNameChangedHandler'. (mscorlib)
Program Location:
at System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr)
at System.Reflection.MethodBase.CheckArguments(Object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.ComponentModel.ReflectEventDescriptor.RemoveEventHandler(Object component, Delegate value)
at System.ComponentModel.ReflectPropertyDescriptor.RemoveValueChanged(Object component, EventHandler handler)
at System.Windows.Forms.BindingSource.UnwirePropertyChangedEvents(Object item)
at System.Windows.Forms.BindingSource.Clear()
at EZOMS.OrderEntry.PairsOrderEntryForm.LoadPairsOrderInfo(PairsOrderInfo pairsOrderInfo) in C:\dev\BRANCH\EZOMS\OrderEntry\PairsOrderEntryForm.cs:line 1063
at EZOMS.OrderEntry.PairsOrderEntryForm.buttonSave_Click(Object sender, EventArgs e) in C:\dev\BRANCH\EZOMS\OrderEntry\PairsOrderEntryForm.cs:line 765
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
LoadPairsOrderInfo中会发生什么? – 2011-03-02 12:19:45
它通过清除BindingSource来重置表单上控件的绑定,然后将PairsOrderInfo添加到绑定中。 //绑定到新的订单信息。 this.pairsOrderInfoBindingSource.Clear(); this.pairsOrderInfo =(PairsOrderInfo)pairsOrderInfo.Clone(); (this.pairsOrderInfo); this.pairsOrderInfoBindingSource.Add(this.pairsOrderInfo); – fawad 2011-03-02 12:25:54
此重置绑定导致下拉列表选择另一个值,并引发该groupnamechanged事件。 – fawad 2011-03-02 12:28:03