Изменить значение textBox из другого класса? - PullRequest
1 голос
/ 19 февраля 2012

Если у меня есть форма C ++ / CLI с textbox1 и класс с именем Dummy в другом заголовочном файле, что я могу сделать, если я хочу «напрямую» изменить значение textbox1.Text функцией, существующей в Пустышка?

Ответы [ 2 ]

2 голосов
/ 20 февраля 2012

C ++ выполняет однопроходную компиляцию. Это означает, что вы не можете использовать что-либо, пока компилятор не увидит это.

Когда у вас есть два класса, использующих друг друга, это может быть сложно. К счастью, C ++ также допускает прямое объявление, которое сообщает компилятору «Вот подпись для класса или функции, которую я собираюсь предоставить вам позже».

В общем случае предоставьте компилятору следующее в этом порядке:

  • предварительное объявление классов

    ref class Dummy;
    ref class MyForm;
    
  • определения классов

    ref class Dummy { ... };
    ref class MyForm { ... };
    
  • определения функций-членов класса

    void Dummy::DoIt()
    {
        myForm->textBox1->Text = whatever;
    }
    

Зачастую единственное, что нужно, - это поместить определения функций в файл .cpp и убедиться, что файл .cpp #include является заголовочным файлом для каждого класса. Для вашей проблемы это означает, что вы должны поместить эту строку в Dummy.cpp, которая включает в себя Dummy.h и myform.h.

0 голосов
/ 19 февраля 2012

Как насчет передать переменную как TextBox Object в фиктивный класс, Dummy вносит изменения и возвращает объект TextBox

public System.Windows.Forms.TextBox ChangeText(System.Windows.Forms.TextBox MyTextBox)
{
    MyTextBox.Text = "HELLO";
    return MyTextBox;
}

это метод в классе из C #, может быть, вы можете использовать ту же логику.

...