Я хочу вызвать событие в VB6, используя приведенный ниже код.
public delegate void EventHandler();
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface ISOMEINTERFACE
{
[DispId(1)]
void MyEvent();
}
[ClassInterface(ClassInterfaceType.AutoDual),
ComSourceInterfaces(typeof(ISOMEINTERFACE)),
ComVisible(true)]
public class clsConVB6
{
public event EventHandler MyEvent;
public void DoSomething()
{
// both events are, the one from this class and the one from Form1, reach this void
MessageBox.Show("Event");
MyEvent(); //does not raise an event when called from an event from Form1
}
public void ComInteropTest()
{
//-> this event is working fine
DoSomething();
Form1 frm = new Form1();
frm.myFormEvent += new Form1.SomeEventHandler(DoSomething);
frm.ShowDialog();
}
}
код в форме Form1:
public delegate void SomeEventHandler();
public event SomeEventHandler myFormEvent;
private void button1_Click(object sender, EventArgs e)
{
//raises an event in the c#-class clsConVB6, not in VB6!
myFormEvent();
}
В моем классе VB6 я получаю первое событие, ноЯ не получаю второй, который создается нажатием кнопки на форме.Событие в Form1 отправляет событие в класс clsConVB6.Это работает нормально, потому что я всегда получаю "event-msgbox".Наконец, clsConVB6 должен вызвать событие в VB6, но я не получаю событие.
Почему это не работает, если форма задействована?Большое спасибо за каждую поддержку.