элемент управления wnidows form
Программирую обычно на другом языке... Но по учёбе столкнулся с 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";
}
};
}
#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";
}
};
}
когда делаю this->label1->Enabled = false; то всё начинает работать, однако label1 стаёт серого неактивного цвета,
можно ли просто отменить события Event чтобы при этом надпись имела активный вид?