2014-10-04 1 views
0

Я пытаюсь преобразовать блок кода из VB в C#, но я столкнулся с проблемой с одной строкой кода.Преобразование строки кода из VB в C#

VB код:

Dim tsAV As System.Windows.Forms.ToolStrip = 
    CType(objHost.FormMain.Controls("tsMain"), Windows.Forms.ToolStrip) 

код у меня есть в C#:

System.Windows.Forms.ToolStrip tsAV = 
    (System.Windows.Forms.ToolStrip)objHost.FormMain; 

Моя проблема приходящий на методе FormMain. Когда я использую код VB, я могу получить метод Controls, но в C# я не могу. Я использую ту же DLL интерфейса, которая включена в оба пути.

Я что-то не так? Возможно ли, чтобы DLL включала определенные вещи, которые работают только в VB?

+0

Что такое objHost? Каков тип этой переменной? –

+0

Что такое 'FormMain' - класс или экземпляр? – Plutonix

ответ

2

Вы должны быть в состоянии использовать это в качестве кода C#:

// using System.Windows.Forms; 
ToolStrip tsAV = (ToolStrip)objHost.FormMain().Controls["tsMain"]; 
              ^^^^^^^^^^^^^^^^^^^ 

В вашем примере вы пытаетесь бросить Form как ToolStrip, что не будет работать.

+0

Моя проблема в том, что Visual Studio кричит на меня, говоря: «FormMain - это метод и не может использоваться в этом контексте» при написании, как у вас есть на C#. В VB это работает отлично. –

+1

VB более прощает, не используя круглые скобки при вызове метода. C# нет, когда он сообщает вам, что вам просто нужно добавить круглые скобки к вызову метода. Я обновил свой пост, чтобы отразить это. –

+0

Ничего себе, мог бы поклясться, что я пробовал это ха-ха, но это сработало! Спасибо за тонну за вашу помощь! Все еще учится lol :) –

0

Если вы пытаетесь получить ToolStrip в форме C#, вы можете использовать следующий код. Это предполагает, что имя ToolStrip является «tsAV» и что вы выполняете этот код из метода в пределах FormMain (который предположительно является именем класса основной формы).

using System.Windows.Forms; 
... 
ToolStrip tsAV = (ToolStrip)Controls["tsMain"]; 

От внешней формы, вы можете найти ToolStrip, используя следующий код:

using System.Windows.Forms; 
... 
FormMain form = new FormMain(); 
ToolStrip tsAV = (ToolStrip)form.Controls["tsMain"]; 

Update: Если предположить, что objHost является контроллером сортов и FormMain является поле или свойство имени, возвращает экземпляр из формы, а не имя класса, вы можете использовать следующее:

using System.Windows.Forms; 
... 
ToolStrip tsAV = (ToolStrip)objHost.FormMain.Controls["tsMain"]; 
+0

Спасибо за вашу помощь! :) –

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

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