2009-07-01 3 views
1

Я провел последний день или около того, написав простую библиотеку управления в VB.NET, которая будет использоваться в существующем проекте vb6. У меня больше всего работает; мои элементы управления отображаются в панели инструментов vb6, работают события и т. д. Моя текущая проблема заключается в попытке передать сложные объекты между vb6 и .NET.Совокупность типов данных маршалинга между .NET и COM

Например, свойство Font .NET TextBox. Теперь vb6 использует объекты stdFont, а .NET (очевидно) использует тип System.Drawing.Font. Моя цель в этом проекте - сделать изменения прозрачными со стороны vb6. Я хотел бы полностью подражать интерфейсу vb6 для каждого элемента управления, чтобы свести к минимуму код, который необходимо изменить, когда мы добавляем новые элементы управления, но я застрял здесь. Вот пример (.NET):

Public Overloads Property Font() As stdole.StdFont 
    Get       
     Return ??? 
    End Get 
    Set(ByVal value As stdole.StdFont) 
     Dim style As FontStyle = GetFontStyle(value) 
     TextBox1.Font = New Font(value.Name, value.Size, style, GraphicsUnit.Pixel, value.Charset) 
    End Set 
End Property 

Как вы можете видеть, проблема с «getter». Как я могу имитировать интерфейс vb6 здесь, если я не могу вернуть свойство шрифта текстового поля? Я не хочу возвращать stdFont-копию System.Drawing.Font по понятным причинам.

Теперь я мог бы просто добавлять такие методы, как SetBold(), SetItalic() и SetFont() (или логические свойства, такие как «FontIsBold»), но это именно то, чего я пытаюсь избежать. Мой опыт взаимодействия довольно минимален, поэтому любая помощь здесь будет оценена по достоинству.

ответ

1

Я был рад видеть ваш ответ ... но я думаю, что у меня что-то не хватает. Я выполнил инструкции в ссылке на msdn, которую вы предоставили, и на стороне VB6 у меня есть доступ к свойствам шрифта в UserControl, но когда я пытаюсь (скажем) установить размер шрифта, это не влияет на способ текст нарисован. И когда я пытаюсь заставить изменить размер шрифта на встроенном TextBox на стороне VB.Net (в свойстве Set Text), я получаю сообщение о том, что font.size является ReadOnly ...

Является рабочим пример доступен?

+0

Теперь посмотрите, что на стороне VB6 вы должны установить весь объект шрифта обратно в UserControl, не можете просто изменить свойство на шрифте. – user2359723

 Смежные вопросы

  • Нет связанных вопросов^_^