Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обратиться к объекту на форме? Приложение Windows Forms. VS2008 
:(
    Опции темы
firedemon1986
Дата 23.5.2010, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 23.5.2010

Репутация: нет
Всего: нет



Не слишком давно перешел с C++ Builder6 на Visual Studio C++ 2008.
И у меня появился не слишком умный вопрос по поводу того, как обратиться к объекту на форме...
Приложение Windows Forms. 
Обращение: 
Код

pictureBox1->Image=Image::FromFile("pic25.jpg");
 из Image_optimizer.cpp не работает. 

Собственно вопрос: Как из Image_optimizer.cpp обратиться к pictureBox1, чтобы загрузить туда рисунок? (в Билдере это было бы что-то в духе Form1->pictureBox1->и_так_далее)


Далее весь код:

Form1.h
Код

#pragma once
#include "Image_optimizer.h"

namespace Image_Optimizer {

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;

    /// <summary>
    /// Сводка для Form1
    ///
    /// Внимание! При изменении имени этого класса необходимо также изменить
    ///          свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса,
    ///          связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае,
    ///          конструкторы не смогут правильно работать с локализованными
    ///          ресурсами, сопоставленными данной форме.
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //

        }
        
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
    public:  System::Windows::Forms::Button^  button1;
    public: System::Windows::Forms::PictureBox^  pictureBox1;
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;


#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->pictureBox1 = (gcnew System::Windows::Forms::PictureBox());
            (cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->pictureBox1))->BeginInit();
            this->SuspendLayout();
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(761, 12);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(122, 23);
            this->button1->TabIndex = 0;
            this->button1->Text = L"Изменить размер";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
            // 
            // pictureBox1
            // 
            this->pictureBox1->Location = System::Drawing::Point(18, 19);
            this->pictureBox1->Name = L"pictureBox1";
            this->pictureBox1->Size = System::Drawing::Size(399, 400);
            this->pictureBox1->SizeMode = System::Windows::Forms::PictureBoxSizeMode::StretchImage;
            this->pictureBox1->TabIndex = 3;
            this->pictureBox1->TabStop = false;
            // 
            // Form1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(895, 533);
            this->Controls->Add(this->button1);
            this->Name = L"Form1";
            this->Text = L"Image Optimizer v1.0";
            (cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->pictureBox1))->EndInit();
            this->ResumeLayout(false);
            this->PerformLayout();

        }
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
             {
                LoadPicture(); //при нажатии на кнопку вызываем LoadPicture() из Image_Optimizer.cpp
             }
};
}


Image_optimizer.cpp
Код

// Image_Optimizer.cpp: главный файл проекта.

#include "stdafx.h"
#include "Form1.h"
#include <stdlib.h>
#include <stdio.h>
#include "Image_optimizer.h"

using namespace Image_Optimizer;


[STAThreadAttribute]

void LoadPicture(void)
{
    pictureBox1->Image=Image::FromFile("pic25.jpg");   //загружаем картинку из файла
};

int main(array<System::String ^> ^args)
{
    // Включение визуальных эффектов Windows XP до создания каких-либо элементов управления
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 

    // Создание главного окна и его запуск
    Application::Run(gcnew Form1());
    return 0;
}


Image_optimizer.h
Код

void LoadPicture(void);   //объявление LoadPicture(), чтобы она была доступна в Form1.h


Это сообщение отредактировал(а) firedemon1986 - 23.5.2010, 09:53
PM MAIL   Вверх
CYBERDREAM
Дата 24.5.2010, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 4
Всего: 28



Либо создай в классе Form1 публичный метод для операции с PictureBox либо сделай PictureBox публичным (но это не приветствуется)


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.1183 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.