У меня есть приложение VB6, которое ссылается и вызывает компонент .NET GUI. Компонент .NET GUI имеет сетку данных. Я хочу, чтобы двойной щелчок по строке в сетке данных вызывал отображение формы в приложении VB6?

Как я мог это сделать?

2
CJ7 19 Дек 2011 в 13:05
1
Вы должны быть в состоянии сделать это легко, объявив свой компонент VB.NET с помощью ключевого слова WithEvents в VB 6. Дополнительная информация: здесь.
 – 
Cody Gray
19 Дек 2011 в 13:10

1 ответ

Я предполагаю, что вы получаете доступ к объектам .NET через COM-взаимодействие, и в этом случае вы просто создаете обычное событие в элементе управления и можете использовать его в потребителе (VB6), как и любые другие события элемента управления.

public MyNetClass {
  public delegate void RowDoubleClickedDelegate(int Row);

  public event RowDoubleClickedDelegate RowDoubleClicked;

  protected void OnRowDoubleClicked(int row) {
    if (RowDoubleClicked != null) {
      RowDoubleClicked(row);
    }
  }
}

И в VB6:

Dim WithEvents NetObect As MyNetClass

Private Sub MyNetClass_RowDoubleClicked(ByVal Row As Long)
  MsgBox CStr(Row) & " clicked"
End Sub
3
Deanna 19 Дек 2011 в 18:32
Это не пользовательский элемент управления, это .NET DLL, которая отображает форму.
 – 
CJ7
19 Дек 2011 в 14:54
И как приложение VB6 взаимодействует с библиотекой .NET? Если через COM-взаимодействие, то же самое применимо, но вам нужно использовать WithEvents в объявлении, как предложил Коди.
 – 
Deanna
19 Дек 2011 в 15:21
Это через COM-взаимодействие. Я до сих пор не понимаю - если я внутри метода на С#, какой код мне написать для запуска события VB6?
 – 
CJ7
19 Дек 2011 в 16:11
2
this.eventname(value1); См. это руководство по основам событий .NET. Затем эти события автоматически становятся доступными для потребляющего объекта через COM-взаимодействие.
 – 
Deanna
19 Дек 2011 в 16:34
Что произойдет, если .NET DLL также обработает это событие. Какой код сработает или оба?
 – 
CJ7
5 Янв 2012 в 09:24