.NET 4.0 в C ++ - Как вызвать AppendText для RichTextBox из статической функции-члена - PullRequest
0 голосов
/ 23 сентября 2011

Мой разум как-то застрял в «цикле ошибок». Я больше не хочу тратить время на бесконечные проб и ошибок, поэтому лучше спросить здесь:

У меня есть Windows-Form (.NET, C ++), как показано ниже. Упрощенная версия здесь имеет только RichTextBox, статическую и нестатическую функцию-член. Добавление текста в RichTextBox из нестатической функции " nonstaticFunc () " работает как положено.

Но как я могу сделать это из статической функции-члена " staticFunc () "? Я попробовал несколько подходов, предложенных на этом форуме, о том, как вызывать нестатические функции из статических функций, но почему-то я не мог понять, как это сделать.

public ref class Form1 : public System::Windows::Forms::Form
    {

    public:
        Form1()
        {
            InitializeComponent();
        }

    protected:
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }

    protected: 

    private:
        System::ComponentModel::Container ^components;

    private: System::Windows::Forms::RichTextBox^  myTextBox;




    System::VoidInitializeComponent( System::Void )
    {
        System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));
        this->myTextBox = (gcnew System::Windows::Forms::RichTextBox());
    }

    public: System::Void nonstaticFunc( System::Void )
    {
        this->myTextBox->AppendText( L"Append this...\n" );
    }

    public: static System::Void staticFunc( System::Void )
    {
        // How do I AppendText here??
        // Not working: this->myTextBox->AppendText( L"Append this...\n" );
    }
}

Спасибо за каждую маленькую помощь! Ценится много!

1 Ответ

1 голос
/ 23 сентября 2011

Вам нужно определить , какое текстовое поле вас интересует. Что, если есть две видимые формы?У вас недостаточно контекста.

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

Почему вы все равно хотите сделать это из staticFunc?Почему вызывающая сторона не может вызвать метод в соответствующей форме?Как только вы поймете проблему - почему это не сработает - вы сможете подумать о наиболее подходящих изменениях.Мы не можем вам этого сказать, так как у нас недостаточно информации.

...