Knight school Ответов: 2

Пользовательских элементов управления &амп; взаимодействие winform


У меня есть winform (vb.net) с пользовательских элементов управления (Elememthost) &ампер; мне нужно, чтобы запустить суб Общественная в форме (со значениями). После того, как я искал то, что кажется вечным, я запутался, так как некоторые говорят, что вы не должны этого делать (плохая структура), а некоторые говорят, что это возможно, но я пробовал все, но ничего не добился. Я это что - то не должен делать или там правильный путь.

Я новичок в wpf и быстро тону.

Извиняюсь

Что я уже пробовал:

Window.GetWindow(Me)

2 Ответов

Рейтинг:
2

Dave Kreskowiak

UserControls никогда не должен вызывать метод в форме, которая его размещает. Это навсегда привязывает элемент управления К тому, чтобы он когда-либо использовался только в этой одной форме и только в этой одной форме.

Это в значительной степени противоречит цели создания элемента управления - повторного использования.

То, что вы должны сделать, - это создать событие в элементе управления, на которое форма может подписаться. Это будет зависеть от формы, чтобы решить, что делать с событием, включая вызов любого кода, который, по мнению формы, должен быть вызван.


Knight school

Спасибо.
Это гораздо более ясное объяснение того, что я пытался понять в течение многих дней поиска. Вопрос только в том, как (возможен какой-то код в виде указателя)?

большое спасибо

Knight school

Извините за задержку с возвращением (я был в отъезде). Спасибо за ссылку, когда я вернусь, я займусь этим. Есть ли у вас рабочий фрагмент, который вы могли бы передать дальше (это может сэкономить мне время и помочь лучше понять его (WPF-это крутая кривая обучения от Winform))?
Спасибо

Dave Kreskowiak

- Нет, не знаю.

Knight school

Это должно быть за пределами моего понимания.

Элемент UserControl должен на Крит в RoutedEventArgs
Так:-
Публичное Событие CustomClick As RoutedEventHandler

С
RaiseEvent CustomClick(Me, New RoutedEventArgs())' для вызова события

И основная форма требует события для получения события
основная форма:-
Частная суб OnCustomButtonClick(как byval отправителя как объект, как byval E как окна.RoutedEventArgs)
MsgBox("Понял")
Конец Подводной Лодки


Но ничего. Есть указания?

Dave Kreskowiak

Да, откажись от того, что у тебя есть, потому что все это неправильно.

Вот пример, который показывает, как это сделать: https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/walkthrough-hosting-a-wpf-composite-control-in-windows-forms

Рейтинг:
0

RickZeeland

В общем, вы не должны смешивать Winforms с WPF, если у вас нет других вариантов.
Если вам нужно, вот статья об этом: Смешивание WPF и WinForms - простой разговор[^]

А вот и пошаговое руководство: Пошаговое руководство: размещение составного элемента управления WPF в Windows Forms | Microsoft Docs[^]
Он написан на языке C#, но вы можете преобразовать его в VB.NET с помощью этого онлайн конвертера: Преобразовать VB.NET в/из C# онлайн - конвертер кодов Roslyn[^]


Knight school

Спасибо,
У меня нет выбора, так как мои навыки самообучения основаны на Vb.net & мне нужны 3d-возможности WPF (крутая кривая обучения & что означает c#, который я научился со временем конвертировать, но не писать). Что касается статьи, то я наткнулся на нее во время своих путешествий, но она, похоже, не указывала на решение или я неправильно ее понял?