26. Changing properties at runtime
• Considering we have the following design (at design time)
27. Changing properties at runtime
• Adding the following button event
private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e)
{
button1 -> Text="I'm button1!!";
}
Control
Property
Valid value
28. Changing properties at runtime
• Adding the following button event
private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e)
{
button1 -> Text="I'm button1!!";
}
Object (intsance)
Reference button by
its name
Data Member
Valid value
30. Changing properties at runtime
private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e)
{
Form1 -> Text=" Hello World ”;
}
Member
Valid value
31. Changing properties at runtime
private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e)
{
Form1 -> Text=" Hello World ”;
}
Member
Valid value
32. Changing properties at runtime
• Now , let’s change the “Form”’s Text property .
private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e)
{
Form1 -> Text=" Hello World ”;
}
Member
Valid value
33. Changing properties at runtime
private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e)
{
this -> Text="Hello World";
}
Object at runtime
(reference to Form1)
Since we are inside
the Form1 class
Member
Value
35. Changing properties at runtime
• Now , let’s change the “Form”’s Opacity property .
private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e)
{
this -> Opacity=20;
}
Class
Member
Valid value
36. Changing properties at runtime
• Now , let’s change the “Form”’s Opacity property .
private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e)
{
this -> Opacity=20;
}
Class
Member
Valid value
37. Changing properties at runtime
• Now , let’s change the “Form”’s Opacity property .
private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e)
{
this -> Opacity=0.2;
}
Class
Member
Valid value
48. Form Hide() vs Close()
What’s the difference between these two:
private: System::Void button1_Click(System::Object^
System::EventArgs^ e)
{
this->Hide();
}
sender,
private: System::Void button1_Click(System::Object^
System::EventArgs^ e)
{
this->Close();
}
sender,
49. Form – Hide problem!
Consider that we have only one form and we write the
following code:
private: System::Void Form1_Load(System::Object^
sender, System::EventArgs^ e)
{
this->Hide();
}
The form won’t be hidden on loading!
50. Form – Hide problem!
What happens now when breaking the project and run it again?
private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e)
{
this->Hide();
}
It won’t compile! When hiding the form , the project is still processed!!!
So we should terminate its process first from task manager
56. Application class – Exit Method
• Informs all message pumps that they must terminate, and
then closes all application windows after the messages have
been processed.
Application::Exit();
57. Application class – Exit Method
• What will happen now?
The whole application (with all forms) will simply close and
the resources will be freed.
private: System::Void Form1_Load(System::Object^
System::EventArgs^ e)
{
Application::Exit();
}
sender,
58. Exit() vs Close()
• What’s the difference?
Application::Exit();
this->Close();
60. Managed VS Un-Managed
• Usually …
– Managed : .NET
– Un-Managed : C++
• gcnew
– Garbage collector
61. Managed VS Un-Managed
• Usually …
– Managed : .NET
– Un-Managed : C++
• gcnew
– Garbage collector
62. Managed VS Un-Managed
• Stack heap “Un-Managed heap” managed heap
int MyVar=10;
stack
int *Ptr=new int;
Un-Managed heap
int ^Ptr=gcnew int; managed heap
• What’s the problem then?!!
63. Managed VS Un-Managed
• Let’s have the following, anything wrong?
int *Ptr=new int;
Ptr=NULL;
Un-Managed heap
It’s a leaking in memory!
int ^Ptr=gcnew int; managed heap
Ptr=NULL;
Not a leak anymore!
64. Managed VS Un-Managed
• Let’s have the following, anything wrong?
int *Ptr=new int;
Ptr=NULL;
Un-Managed heap
It’s a leaking in memory!
int ^Ptr=gcnew int; managed heap
Ptr=NULL;
Not a leak anymore!
65. Which one of these works?
private: System::Void button1_Click_1(System::Object^ sender,
System::EventArgs^ e)
{
Drawing::Size *S;
S->Height=200;
S->Width=300;
this->Size=*S;
}
there’s no new unmanaged
private: System::Void button1_Click_1(System::Object^ sender,
System::EventArgs^ e)
{
Drawing::Size *S=gcnew Drawing::Size;
S->Height=200;
S->Width=300;
this->Size=*S;
gcnew with * unmanaged with managed
}
private: System::Void button1_Click_1(System::Object^ sender,
System::EventArgs^ e)
{
Drawing::Size *S=new Drawing::Size;
S->Height=200;
S->Width=300;
this->Size=*S;
WORKS! unmanaged
}
66. Which one of these works?
private: System::Void button1_Click_1(System::Object^ sender,
System::EventArgs^ e)
{
Drawing::Size *S=new Size;
S->Height=200;
S->Width=300;
this->Size=*S;
Un-Known Size identifier “3’laza :D”
}
private: System::Void button1_Click_1(System::Object^ sender,
System::EventArgs^ e)
{
Drawing::Size ^S=gcnew Drawing::Size;
S->Height=200;
S->Width=300;
this->Size=*S;
}
Works! managed
private: System::Void button1_Click_1(System::Object^ sender,
System::EventArgs^ e)
{
Drawing::Size ^S=gcnew Drawing::Size;
S->Height=200;
S->Width=300;
this->Size=^S;
}
Compiler error .. No such
67. Which one of these works?
private: System::Void button1_Click_1(System::Object^
System::EventArgs^ e)
{
Drawing::Size ^S;
S->Height=200;
S->Width=300;
this->S=^S;
}
Error .. ^
sender,
private: System::Void button1_Click_1(System::Object^ sender,
System::EventArgs^ e)
{
Drawing::Size ^S=new Drawing::Size;
S->Height=200;
S->Width=300;
this->Size=^S;
}
Should be gcnew , not new
68. Which one of these works?
private: System::Void button1_Click_1(System::Object^
sender, System::EventArgs^ e)
{
this->Size=Drawing::Size(200,300);
}
Works!
69. Which one of these works?
private: System::Void button1_Click_1(System::Object^
sender, System::EventArgs^ e)
{
this->Size=Drawing::Size(200,300);
}
Works!