Использование элемента управления ActiveX в проекте C #, где Size (float, float, float) существует в ocx - PullRequest
0 голосов
/ 20 июля 2011

Я пытаюсь написать программу, использующую сторонний элемент управления ActiveX в проекте .NET 3.5.Я добавляю его в форму, используя набор инструментов, и он добавляет AxLEADLib, LEADLib и stdole к ссылкам моего проекта.

Однако автоматически генерируемый код вставляет

this.axLEAD1.Size = new System.Drawing.Size(100, 50);

Но в AxLEAD естьсуществует как

public System.Drawing.Size Size {get; set;}
public virtual short Size(float fWidth, float fHeight, short iFlags)

Так что, когда я пытаюсь установить размер элемента управления в моей форме, в designer.cs я получаю ошибку Cannot assign to 'Size' because it is a 'method group'.Что я могу сделать, чтобы обойти эту проблему?Как мне установить размер моего элемента управления?

Это проект, переносимый из VB6, и в старом проекте, похоже, не было сделано ничего особенного для этого.

Ответы [ 2 ]

1 голос
/ 20 июля 2011

Это специфический режим сбоя .NET, вызванный оболочкой AxHost. Свойство Size наследуется от Control и конфликтует с методом Size из элемента управления ActiveX.

Не так легко исправить. Запустите AxImp.exe с параметром командной строки / source, чтобы он генерировал код вместо сборки. Затем вы можете отредактировать код и добавить его в свой проект. Редактирование сложно, так как это наследуемое свойство. Примерно так:

[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new Size Size { get; set; }

public Size Size2 { 
   get { return base.Size; }
   set { base.Size = value; }
}

Первый скрывает свойство Size от дизайнера. Свойство Size2 можно задать в конструкторе.

0 голосов
/ 21 июля 2011

Я не мог заставить решение Ганса работать правильно, но я нашел обходной путь. Я изменяю строку с ошибкой на

((Control)this.axLEAD1).Size = new System.Drawing.Size(100, 50);

И все работает отлично. Мне просто нужно исправлять это каждый раз, когда код обновляется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...