C++ Windows Forms L01 - Intro

Post on 31-Aug-2014

369 views 2 download

Tags:

description

C++ Windows Forms L01 - Intro of C++ Windows Forms Light Course

transcript

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!