C# 如何使用dll向窗体发送消息?

C# 如何使用dll向窗体发送消息?,c#,forms,dll,C#,Forms,Dll,我正在用c开发一个使用dll的gui应用程序。此dll包含几个常见函数,如属性验证 但是,我需要使用如下函数验证对象的属性: public static bool validate(MyObject object) { bool success = true; // some validation if(!valid(object.property)) { // log to database, this works log("property is not

我正在用c开发一个使用dll的gui应用程序。此dll包含几个常见函数,如属性验证

但是,我需要使用如下函数验证对象的属性:

public static bool validate(MyObject object)
{

  bool success = true;

  // some validation
  if(!valid(object.property))
  {
    // log to database, this works
    log("property is not valid"); // log to database, this works

    // how can I do this?
    sendMessageToForm("property is not valid");

    success = false;
  }

  return success;

}
此外,validate必须返回布尔值,而不是消息字符串


如何通过dll向窗体发送消息?

您需要在项目中添加dll的引用,然后在类中添加dll的命名空间,稍后声明类的对象并调用验证消息并传递参数以进行验证。

如果您在此处显示的是dll中的代码,我假设您想从dll内部更新表单。 实现这一点的方法是让dll类发布一个事件,比如ValidationError事件,该事件还将作为EventArgs附带要在窗体上显示的消息

然后,在窗体上,从dll类实例化对象,还必须为该事件附加一个侦听器

MyClassInDll myObject=new MyClassInDll();
myObject.ValidationError+=new EventHandler<ValidationErrorMessage>(YourMethodThatDisplaysTheMessagesOnTheForm);
然后,您可以使用该对象调用if myObject.ValidatesomeOtherObject,它将返回一个布尔值,同时仍会触发将错误消息发送到表单的事件

public static bool validate(MyObject object, out message)
这将为您提供一个输出消息字符串,可以从调用validate的位置进行设置