C++ Windows Forms L01 - Intro
-
Upload
mohammad-shaker -
Category
Technology
-
view
357 -
download
2
description
Transcript of C++ Windows Forms L01 - Intro
Mohammad Shakermohammadshakergtr.wordpress.com
C++.NET Windows Forms Course@ZGTRShaker
C++.NET Windows Forms Course
L01 - Introduction
.NET \ What will you learn?
• OOP with .NET, Thinking OOP and The Concept of .NET• Peek on C++.NET console• Debugging in .NET• Windows Forms Controls (Tabs, ComboBox, Timers, ...etc)• Drawing with .NET• Collections
.NET \ What will you learn?
• Event Handling • Exception Handling • Files processing - Strings Manipulating• Dynamic Controls associated with Event Handling• The Concept of C#
What’s .NET?
• .NET Framework :– A collection of technologies that …
• Unite isolated applications• Make information available anytime, anywhere• Simplify development and deployment
What’s .NET?
• .NET Framework :– Common Language Runtime* – provides an abstraction layer over the
operating system– Base Class Libraries
• pre-built code for common low-level programming tasks
– Development frameworks and technologies • Reusable• customizable solutions for larger programming tasks
_________________________________________________
*The Common Language Runtime (CLR) is the virtual machine component of the .NET Framework. All .NET programs execute under the supervision of the CLR, guaranteeing certain properties and behaviors in the areas of memory management, security, and exception handling.
Some .NET Base Class Libraries
System
System.Data System.Xml
System.Web
Globalization
Diagnostics
Configuration
Collections
Resources
Reflection
Net
IO
Threading
Text
ServiceProcess
Security
Design
ADO
SQLTypes
SQL
XPath
XSLT
RuntimeInteropServices
Remoting
Serialization
Serialization
Configuration SessionState
Caching Security
ServicesDescription
Discovery
Protocols
UI
HtmlControls
WebControls System.Drawing
Imaging
Drawing2D
Text
Printing
System.WinForms
Design ComponentModel
.NET Platform
Man
age
and
Col
labo
rate
Deployment
Testing
Development
Design
Analysis
Planning
Visual Studio® .NET
.NET Framework, Languages, Tools
Base Class Library
Common Language Specification
Common Language Runtime
Data and XML
VB C++ C#V
isual Studio .NET
WebServices
JScript …
UserInterface
Common Language Runtime
Class Loader
IL to NativeCompilers
CodeManager
GarbageCollector
Security Engine Debug Engine
Type Checker Exception Manager
Thread Support COM Marchaler
Base Class Library Support
.NET Framework Services
ASP.NET Logical evolution of ASP (compiled)
Web forms Manageable code (non spaghetti)
Windows® forms Framework for building rich clients
ADO.NET, evolution of ADO New objects (e.g., DataSets)
XML Support Throughout
Introduction to .NET
Introduction to .NET
• The .NET Framework allows you to:– Apply common skills across a variety of devices , application types ,
and programming tasks– Integrate with other tools and technologies to build the right
solution with less work– Build compelling applications faster
• .NET Framework releases :– 1 , 1.1 , 2 , 3 , 3.5 , 4, 4.5
.NET IDE and Frameworks
• .NET With Visual Studio 2008 \ 2010 \ 2012 \ 2013• Framework 3.5 \ 4.0 \ 4.5
Resources for .NET
http://www.w3.org/TR/SOAP/ - W3C standards for SOAP implementation http://www.uddi.org – UDDI standards for web services implementation http://www.microsoft.com/net - Microsoft .NET home http://msdn.microsoft.com/net - Microsoft .NET developers home http://msdn.microsoft.com/xml - Microsoft XML developers home http://msdn.microsoft.com/webservices – Microsoft Web Services developers home
http://www.gotdotnet.com – Developers .NET resource
Controls
• Form• Button• CheckBox• CheckedListBox• ComboBox• Label• ListBox• PictureBox
• ProgressBar• RadioButton• TextBox• Panel• TabControl• DataGridView• Timer
Con.sole
Console
Console
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
return 0;
}
Console
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console
What’s this?// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console
What a “namespace” is?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console
Why using another namespace?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console
“main”Why?
// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console
Why isn’t it just a void?!Why passing a string “args”
// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console
Easy, right?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console
What’s that?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console
Object/Class// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console
“::” ?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console
Console::WriteLine// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console
Console::WriteLine// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console
// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console ^myConsole=gcew Console();
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console
// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console ^myConsole=gcew Console();
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console
Creating an instance of class “Console”// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console ^myConsole=gcew Console();
Console::WriteLine(L"Hello World");
Console::ReadKey();
return 0;
}
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::Write("Hi, again!");
Console::WriteLine("\n Hi, again!");
Console::Write("Hi, again!");
Console::ReadKey();
return 0;
}
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::Write("Hi, again!");
Console::WriteLine("\n Hi, again!");
Console::Write("Hi, again!");
Console::ReadKey();
return 0;
}
Hello World
Hi, again!
Hi, again!
Hi, again!
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String ^str1=gcnew String("Hi Hi Hi, first time.");
String ^str2="Hi Hi Hi, second time.";
String ^str3;
Console::Write("Enter your name plz: ");
str3=Console::ReadLine();
Console::WriteLine(str1 + " " + str2 + " Hi " + str3 + "!");
Console::ReadKey();
return 0;
}
Console
Everything is dynamically allocated through pointer!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String ^str1=gcnew String("Hi Hi Hi, first time.");
String ^str2="Hi Hi Hi, second time.";
String ^str3;
Console::Write("Enter your name plz: ");
str3=Console::ReadLine();
Console::WriteLine(str1 + " " + str2 + " Hi " + str3 + "!");
Console::ReadKey();
return 0;
}
Console
Why no gcnew here?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String ^str1=gcnew String("Hi Hi Hi, first time.");
String ^str2="Hi Hi Hi, second time.";
String ^str3;
Console::Write("Enter your name plz: ");
str3=Console::ReadLine();
Console::WriteLine(str1 + " " + str2 + " Hi " + str3 + "!");
Console::ReadKey();
return 0;
}
Console
Why no gcnew here?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String ^str1=gcnew String("Hi Hi Hi, first time.");
String ^str2="Hi Hi Hi, second time.";
String ^str3;
Console::Write("Enter your name plz: ");
str3=Console::ReadLine();
Console::WriteLine(str1 + " " + str2 + " Hi " + str3 + "!");
Console::ReadKey();
return 0;
}
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String ^str1=gcnew String("Hi Hi Hi, first time.");
String ^str2="Hi Hi Hi, second time.";
String ^str3;
Console::Write("Enter your name plz: ");
str3=Console::ReadLine();
Console::WriteLine(str1 + " " + str2 + " Hi " + str3 + "!");
Console::ReadKey();
return 0;
}
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String ^str1=gcnew String("Hi Hi Hi, first time.");
String ^str2="Hi Hi Hi, second time.";
String ^str3;
Console::Write("Enter your name plz: ");
str3=Console::ReadLine();
Console::WriteLine(str1 + " " + str2 + " Hi " + str3 + "!");
Console::ReadKey();
return 0;
}
Console
Returns the string that’s read from the input buffer// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String ^str1=gcnew String("Hi Hi Hi, first time.");
String ^str2="Hi Hi Hi, second time.";
String ^str3;
Console::Write("Enter your name plz: ");
str3=Console::ReadLine();
Console::WriteLine(str1 + " " + str2 + " Hi " + str3 + "!");
Console::ReadKey();
return 0;
}
Console
Returns the string that’s read from the input buffer// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String ^str1=gcnew String("Hi Hi Hi, first time.");
String ^str2="Hi Hi Hi, second time.";
String ^str3;
Console::Write("Enter your name plz: ");
str3=Console::ReadLine();
Console::WriteLine(str1 + " " + str2 + " Hi " + str3 + "!");
Console::ReadKey();
return 0;
}
Console
// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i.ToString() + f.ToString());
Console::ReadKey();
return 0;
}
Console
It’s not a “->”
// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i.ToString() + f.ToString());
Console::ReadKey();
return 0;
}
Console
Where this method “ToString()” comes from?!
// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i.ToString() + f.ToString());
Console::ReadKey();
return 0;
}
Console
// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i.ToString() + f.ToString());
Console::ReadKey();
return 0;
}
10
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
Console
No “ToString()” method!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
Console
How compiler works?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
Console
How compiler works?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
Console
How compiler works?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
Console
How compiler works?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
Console
How compiler works?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
Console
How compiler works?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
Console
How compiler works?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
Console
How compiler works?!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
Console
Arithmetic “Sum”!// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
Console
Results a “float”// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
Console
Results a “float”in a “String” context
// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
Console
Results a “float”in a “String” context
// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
float f=0;
Console::WriteLine(i + f);
Console::ReadKey();
return 0;
}
1
Console (Types Conversion)// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
String ^str=i.ToString();
Console::WriteLine(str);
Console::ReadKey();
return 0;
}
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i=1;
String ^str=i.ToString();
Console::WriteLine(str);
Console::ReadKey();
return 0;
}
1
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String ^str="1123";
int i=Int32::Parse(str);
i++;
Console::WriteLine(i);
Console::ReadKey();
return 0;
}
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String ^str="1123";
int i=Int32::Parse(str);
i++;
Console::WriteLine(i);
Console::ReadKey();
return 0;
}
1124
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String ^str="1123";
int i=0;
Int32::TryParse(str,i);
i++;
Console::WriteLine(i);
Console::ReadKey();
return 0;
}
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String ^str="1123";
int i=0;
Int32::TryParse(str,i);
i++;
Console::WriteLine(i);
Console::ReadKey();
return 0;
}
1124
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String ^str="1123ccccc";
int i=0;
Int32::TryParse(str,i);
i++;
Console::WriteLine(i);
Console::ReadKey();
return 0;
}
Console// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String ^str="1123ccccc";
int i=0;
Int32::TryParse(str,i);
i++;
Console::WriteLine(i);
Console::ReadKey();
return 0;
}
1
Arrays
Arrays
• Defining an array of string with dimension of 3
public : array <String^ , 3 > ^MyArr;
Arrays
• Defining an array of string with dimension of 3
• Everything okay?
Both are Compiler Errors!
public : array <String^ , 3 > ^MyArr;
public : array <String^ , 3 > MyArr;
public : array <String , 3 > ^MyArr;
Arrays
• Sth wrong?
array <String ^ , 1 > ^MyArr;
MyArr[0][0]="1";
Compiler error
array <String ^ , 1 > ^MyArr;
MyArr[0]=1;
Compiler error
array <String ^ , 2> ^MyArr;
MyArr=gcnew array <String^ , 2 > (100,50);
MyArr[0,0]="1";
Everything is good
Arrays
• Sth wrong?array <String ^ , 2> ^MyArr;
MyArr=gcnew array <String^ > (100,50);
MyArr[0,0]="1";
Compiler error
array <String ^ , 2> ^MyArr;
MyArr=gcnew array <String^ , 2 > (100,50);
MyArr[0][0]="1";
Compiler error
array <String ^ , 2> ^MyArr;
MyArr=gcnew array <String^ , 2 > (100)(50);
MyArr[0,0]="1";
Compiler error
Arrays
• Sth wrong?
array <String ^> ^MyArr;
MyArr=gcnew array <String^ > (50);
MyArr[0]="1";
Everything is good
Arrays
Arrays
// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args){
array <String ^ , 1 > ^MyArr; MyArr[0]="1";
Console::ReadKey();return 0;
}
Arrays
// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args){
array <String ^ , 1 > ^MyArr; MyArr[0]="1";
Console::ReadKey();return 0;
}
Ntn wrong!
Arrays
// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args){
array <String ^ , 1 > ^MyArr; MyArr[0]="1";
Console::ReadKey();return 0;
}
Ntn wrong!
Arrays
// CppdotNetConsoleCourseTest.cpp : main project file.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args){
array <String ^ , 1 > ^MyArr; MyArr[0]="1";
Console::ReadKey();return 0;
}
Ntn wrong!
Arrays
• Considering that we have a class named “CELL”array <CELL^ , 2> ^MyArr;
MyArr=gcnew array <CELL^ , 2 > (100,50);
CELL ^MyCell=gcnew CELL;
MyArr[0,0]=MyCell;
Arrays
• Considering that we have a class named “CELL”array <CELL^ , 2> ^MyArr;
MyArr=gcnew array <CELL^ , 2 > (100,50);
CELL ^MyCell=gcnew CELL;
MyArr[0,0]=MyCell;
That’s it for today!