Terence Moore Ответов: 1

Как изменить изображение, отображаемое picturebox из-за пределов формы


Обычно, когда я хочу изменить изображение, отображаемое pictureBox из формы Windows, я запускаю такое событие:

private: System::Void PicBoxMonton1_DoubleClick(System::Object^  sender, System::EventArgs^  e)
{
    if (this->PicBoxMonton1->Image != Image::FromFile(Glo::m_Empty))
    {
        this->PicBoxMonton1->Image = Image::FromFile(Glo::m_Empty);
        ....
        ....
    }
}

Этот синтаксис (this- & gt;PicBoxMonton1 - >Image) не работает, когда я пытаюсь выполнить если оператор из функции, написанный в отдельном .СРР файл, где находятся все мои функции.
Я новичок.
Какие параметры мне нужно передать функции?
Как я могу изменить инструкцию внутри если заявление?

Что я уже пробовал:

Все в пределах моего ограниченного опыта. И я не нашел ни одного примера, чтобы проиллюстрировать себя.

Richard MacCutchan

Это потому, что this ключевое слово относится к заключающему классу. В этом случае форма, содержащая обработчик события. Вам нужно получить ссылку на форму, чтобы вызвать этот метод.

Terence Moore

Именно так. Таково было мое понимание с самого начала. Но как построить ссылку на форму? Я пробовал такие вещи, как namespace::MyForm->pictureBox->Image, но безуспешно. Спасибо.

Richard MacCutchan

Вы его не создаете. Когда вы создаете форму в первую очередь, вам нужно где-то сохранить ссылку.

1 Ответов

Рейтинг:
1

KarstenK

Чтобы решить эту проблему, вы должны объявить общественный функция, которую вы вызываете извне. Для этого вам нужен действительный указатель на экземпляр класса form.

Другая проблема заключается в том, что вызов должен быть в основном потоке вашего приложения. Только если его нет в основном потоке взгляните на это ответ на StackOverflow.


Terence Moore

Спасибо за вклад. Функция уже объявлена общественный.
Как построить допустимый указатель на экземпляр класса form?.
СПАСИБО.