EDN Admin
Well-known member
i´m trying to relay the Click event from a sub control in my custom UserControl
ControlBar.husing namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System:ata;
using namespace System:rawing;
namespace ControlBar {
//delegate void ClickRelayHandler(Object^, EventArgs^);
/// <summary>
/// Summary for WindowsFormControlTemplateControl
/// </summary>
public ref class ControlBarControl : public System::Windows::Forms::UserControl
{
private:
// controls
ControlBar::ControlPanel^ Panel;
ControlBar::TogleButton^ togleButton;
ControlBar::SplitterControl^ splitter;
ControlBar::Spacer^ spacer;
//System::Windows::Forms::Control^ parent;
public:
delegate void ClickRelayHandler(Object^, EventArgs^);
event ClickRelayHandler^ onClickRelayHandler;
ControlBarControl(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~ControlBarControl()
{
if (components)
{
delete components;
}
}
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container^ components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
.
.
..
}
#pragma endregion
/// <summary>
/// Get Location of Splitter
/// </summary>
public:
SplitterControl^ SplitterControl()
{
return /*%*/this->splitter;
}
ControlPanel^ ControlPanel()
{
return this->Panel;
}
TogleButton^ TogleButton()
{
return this->togleButton;
}
Spacer^ Spacer()
{
return this->spacer;
}
private:
void togleButton_Click(System::Object^ sender, System::EventArgs^ e)
{
onClickRelayHandler(sender, e); // this compliles and does not show as an error.
}
};
}
form.hform(void)
{
InitializeComponent();
this->controlBarControl1->onClickRelayHandler += gcnew ControlBar::ControlBarControl::ClickRelayHandler(this, &form::var_ControlBarCick);
}
void var_ControlBarCick(System::Object^ sender, System::EventArgs^ e)
{
MessageBox( 0, L"bu", L"var_ControlBarCick", 0 );
}
error C3352: void MyForm::form::var_ControlBarCick(System::Object ^,System::EventArgs ^) : the specified function does not match the delegate type void (void)
thank you.
View the full article
ControlBar.husing namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System:ata;
using namespace System:rawing;
namespace ControlBar {
//delegate void ClickRelayHandler(Object^, EventArgs^);
/// <summary>
/// Summary for WindowsFormControlTemplateControl
/// </summary>
public ref class ControlBarControl : public System::Windows::Forms::UserControl
{
private:
// controls
ControlBar::ControlPanel^ Panel;
ControlBar::TogleButton^ togleButton;
ControlBar::SplitterControl^ splitter;
ControlBar::Spacer^ spacer;
//System::Windows::Forms::Control^ parent;
public:
delegate void ClickRelayHandler(Object^, EventArgs^);
event ClickRelayHandler^ onClickRelayHandler;
ControlBarControl(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~ControlBarControl()
{
if (components)
{
delete components;
}
}
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container^ components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
.
.
..
}
#pragma endregion
/// <summary>
/// Get Location of Splitter
/// </summary>
public:
SplitterControl^ SplitterControl()
{
return /*%*/this->splitter;
}
ControlPanel^ ControlPanel()
{
return this->Panel;
}
TogleButton^ TogleButton()
{
return this->togleButton;
}
Spacer^ Spacer()
{
return this->spacer;
}
private:
void togleButton_Click(System::Object^ sender, System::EventArgs^ e)
{
onClickRelayHandler(sender, e); // this compliles and does not show as an error.
}
};
}
form.hform(void)
{
InitializeComponent();
this->controlBarControl1->onClickRelayHandler += gcnew ControlBar::ControlBarControl::ClickRelayHandler(this, &form::var_ControlBarCick);
}
void var_ControlBarCick(System::Object^ sender, System::EventArgs^ e)
{
MessageBox( 0, L"bu", L"var_ControlBarCick", 0 );
}
error C3352: void MyForm::form::var_ControlBarCick(System::Object ^,System::EventArgs ^) : the specified function does not match the delegate type void (void)
thank you.
View the full article