Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6450
Последний выпуск: 19.06.2015

элемент управления wnidows form

82K
08 мая 2012 года
nikolai_
2 / / 08.05.2012
Всем доброго времени суток!!!
Программирую обычно на другом языке... Но по учёбе столкнулся с Visual C++.(Visual Studio 2010)
В общем проблема состоит в следующем: создаю свой элемент управления windows form, компилю его в dll, подключаю к другому проекту ссылку на dll, но всё никак не могу сообразить как прикрутить к нему обработчик события "click" чтобы он работал... остальное всё хорошо работает.

ниже код элемента:


Код:
#pragma once
 
#include <string.h>
#include <stdlib.h>
 
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
 
 
 
 
namespace item {
 
    /// <summary>
    /// Сводка для элемента управления item
    /// </summary>
    public ref class itemControl : public System::Windows::Forms::Control
    {
       
    /*public:event EventHandler^ Click {
        void add (EventHandler^ value);
        void remove (EventHandler^ value);
    }*/

 
    private:
        int _value;
 
    public:
        int id;
    private: System::Diagnostics::EventLog^  eventLog1;
 
    public:
        int position;
 
       
        int getValue(void)
        {
            return _value;
        }
 
        void setValue(int value)
        {
            _value = value;
            String ^s = Convert::ToString(_value);
            this->label1->Text = s;
        }
 
        itemControl(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~itemControl()
        {
            if (components)
            {
                delete components;
            }
        }
    public: System::Windows::Forms::Label^  label1;
    protected:
 
    private:
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        System::ComponentModel::Container^ components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(itemControl::typeid));
            this->label1 = (gcnew System::Windows::Forms::Label());
            this->eventLog1 = (gcnew System::Diagnostics::EventLog());
            (cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->eventLog1))->BeginInit();
            this->SuspendLayout();
            //
            // label1
            //
            this->label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 12, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
            static_cast<System::Byte>(204)));
            this->label1->ForeColor = System::Drawing::SystemColors::ControlLightLight;
            this->label1->Image = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"label1.Image")));
            this->label1->Location = System::Drawing::Point(0, 0);
            this->label1->Name = L"label1";
            this->label1->Size = System::Drawing::Size(48, 48);
            this->label1->TabIndex = 0;
            this->label1->Text = L"1";
            this->label1->TextAlign = System::Drawing::ContentAlignment::MiddleCenter;
            this->Click += gcnew System::EventHandler(this, &itemControl::click);
            //
            // itemControl
            //
            //this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            //this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->Controls->Add(this->label1);
            this->Name = L"itemControl";
            this->Size = System::Drawing::Size(48, 48);
            (cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->eventLog1))->EndInit();
            this->ResumeLayout(false);
 
        }
#pragma endregion
    public: System::Void click(System::Object^  sender, System::EventArgs^  e) {
                this->label1->Text = L"133";
             }
};
}
82K
09 мая 2012 года
nikolai_
2 / / 08.05.2012
разобрался сам... оказывается label внутри этого элемента управления перехватывает click.
когда делаю this->label1->Enabled = false; то всё начинает работать, однако label1 стаёт серого неактивного цвета,
можно ли просто отменить события Event чтобы при этом надпись имела активный вид?

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог