日期:2014-05-18  浏览次数:20992 次

C#调用外部类库中事件的问题
最近写一个程序,调用了一个外部的Dll库文件,里面有个事件。不知道怎么去调用它。用事件订阅的方式可以执行,但是在事件处理方法里面对控件赋值时,提示 Form.dll偶尔的类型出错,控件的值没有变化。不知道是怎么回事。下面是代码:

  public ExecClass(MainForm From) //类构造函数中订阅事件 {
  base.onProgressChanged += new _IPSExchangeEvents_onProgressChangedEventHandler(main_onProgressChanged);
   
  }

  /// <summary>
  /// 事件处理
  /// </summary>
  public void main_onProgressChanged(object sender, int e)
  {
  TextBox1.Text = e.ToString(); //执行这里时在输出窗口中就提示类型错误了,但是e中是有值的,文本框中就没有值。求解????
  }

 

------解决方案--------------------
main_onProgressChanged(object sender, int e)
第二个参数是整型,看看那个事件要的是啥类型
------解决方案--------------------
事件参数,基类是EventArgs,你要传递int数据,自己要派生一个事件参数类:

C# code

public class YourArgs:public EventArgs
{
   public int data;
}

------解决方案--------------------
那个位置应该是 继承自EventArgs 的一个类

你可以先写 EventArgs 然后断点看下具体的类型
------解决方案--------------------
在你要触发事件的地方:

YourArgs args=new YourArgs ();
args.data=100;

OnProgress(args);//触发事件

你可以看看MSDN上面对事件的介绍。。。