Introduction
i am going to present simple application developed using (CSharpPWCT)
CSharpPWCT = C#.NET Programming Without Coding Technology and it's a set of Programming Without Coding Technology (PWCT) components that wrap the C#.NET programming language
Using CSharpPWCT we don't need to write code but instead of writing code we can visually specify every functional aspect of the program similar to flowchart and algorithms and we interact with GUI components and as a result of interaction we get another GUI objects generated for us in a way where we can control the flow of data and code execution
CSharpPWCT components are under development in the alpha stage (we need to add more components & documentation) and you could give it a try after reading this article (it's free-open source)
Background
I am not going to explain what is programming and what is C#.NET
I expect that the reader at least know basics of programming and uses C#.NET to write simple programs at least.
Using the code
We are going to create simple application that will show a window contains label and when the user click that label a counter will start using a for-loop and we will see numbers from 1 to 10 appears on the console window.
We will not write code because we are going to use Programming Without Coding Technology and we will have a generated code in the end of this session
using</span /> System ;
using</span /> System.Drawing ;
using</span /> System.Collections ;
using</span /> System.ComponentModel ;
using</span /> System.Windows.Forms ;
using</span /> System.Data ;
public</span /> class</span /> win1 : Form
{
private</span /> System.Windows.Forms.Label lbl1 ;
public</span /> static</span /> void</span /> Main ( string</span />[] argc )
{
Application.Run( new</span /> win1() );
}
public</span /> win1 ( )
{
this</span />.Load += new</span /> System.EventHandler( this</span />.win1_Load );
this</span />.Click += new</span /> System.EventHandler( this</span />.win1_Click );
this</span />.lbl1 = new</span /> System.Windows.Forms.Label ( );
this</span />.Controls.Add (lbl1);
lbl1.Click += new</span /> System.EventHandler (this</span />.lbl1_Click);
this</span />.lbl1.Top = 10</span /> ;
this</span />.lbl1.Left = 10</span /> ;
this</span />.lbl1.Width = 200</span /> ;
this</span />.lbl1.Height = 30</span /> ;
this</span />.lbl1.Text = "</span />Count from 1 to 10 "</span /> ;
int</span />[] lbl1acolorsfc = {0</span />,0</span />,0</span />} ;
this</span />.lbl1.ForeColor = System.Drawing.Color.FromArgb (lbl1acolorsfc[0</span />],lbl1acolorsfc[1</span />]
,lbl1acolorsfc[2</span />]);
int</span />[] lbl1acolorsbc = {255</span />,255</span />,255</span />} ;
this</span />.lbl1.BackColor = System.Drawing.Color.FromArgb (lbl1acolorsbc[0</span />],lbl1acolorsbc[1</span />]
,lbl1acolorsbc[2</span />]);
this</span />.lbl1.Font = new</span /> Font( "</span />arial"</span /> , 10</span />) ;
}
private</span /> void</span /> win1_Click( object</span /> sender, System.EventArgs e )
{
}
private</span /> void</span /> win1_Load( object</span /> sender, System.EventArgs e )
{
int</span /> [] acolors = {255</span />,255</span />,255</span />} ;
this</span />.BackColor = System.Drawing.SystemColors.Control;
this</span />.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
this</span />.WindowState = System.Windows.Forms.FormWindowState.Normal;
this</span />.Top = 10</span /> ;
this</span />.Left = 10</span />;
this</span />.Width = 400</span /> ;
this</span />.Height = 400</span /> ;
this</span />.Text = "</span />Hello World"</span /> ;
this</span />.Opacity = 100</span /> ;
}
protected</span /> void</span /> lbl1_Click ( object</span /> sender, System.EventArgs e)
{
for</span /> ( int</span /> x = 1</span /> ; x <= 10</span /> ; x++ )
{
Console.WriteLine( x );
}
}
}

Implementation using CSharpPWCT
1 - Install PWCT 1.7 Sharp (http://doublesvsoop.sourceforge.net)
2 - Run CSharpPWCT 1.7

3 - Welcome to Programming Without Coding Technology

4 - At first we are going to create new project .... click new or press (Enter)

5 - Determine project name ..... for example ( test )

6 - There is no need to write code just imagine any software as a goal that you can achieve through a logical steps generated through interactive sessions with you wherein you control every functional aspect of your program
we will start from (This First Step)
At first we want to generate steps for (using namespaces)
The first way to do that is to select the first step then click interact (the slow way using mouse)
And the second way to do that is to select the first step then press (q) - the fast way using keyboard

7 - the letter (q) are in the search line and we have our component (q Using) that we want to use so click Ok (the slow way) or press (Enter) - the fast way

8 - Now we are in Goal Designer again but we have 6 steps generated for us after using (q Using) component.
we will continue now and we are going to create a window
press (w) letter after selecting the first step

Now we have generated the next code
using</span /> System ;
using</span /> System.Drawing ;
using</span /> System.Collections ;
using</span /> System.ComponentModel ;
using</span /> System.Windows.Forms ;
using</span /> System.Data ;
9 - press (Enter) to interact with the (Window) component

10 - Change the window title to (Hello World)


11 - Now we are in Goal Designer again but we have many steps generated for us after using (window) component.
The generated steps create new class (win1) from class (Form)
It's clear that using this way of programming ... we could uses Object Oriented Programming
And other programming concepts without problems , i.e. we still have full control
Now we are going to add a label control to our window
select step ([2] Create Controls Here | Open Form Designer From Here )
then click interact or press the letter (L) using keyboard - more faster

Now we have generated the next code
using</span /> System ;
using</span /> System.Drawing ;
using</span /> System.Collections ;
using</span /> System.ComponentModel ;
using</span /> System.Windows.Forms ;
using</span /> System.Data ;
public</span /> class</span /> win1 : Form
{
private</span /> System.Windows.Forms.Label lbl1 ;
public</span /> static</span /> void</span /> Main ( string</span />[] argc )
{
Application.Run( new</span /> win1() );
}
public</span /> win1 ( )
{
this</span />.Load += new</span /> System.EventHandler( this</span />.win1_Load );
this</span />.Click += new</span /> System.EventHandler( this</span />.win1_Click );
}
private</span /> void</span /> win1_Click( object</span /> sender, System.EventArgs e )
{
}
private</span /> void</span /> win1_Load( object</span /> sender, System.EventArgs e )
{
int</span /> [] acolors = {255</span />,255</span />,255</span />} ;
this</span />.BackColor = System.Drawing.SystemColors.Control;
this</span />.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
this</span />.WindowState = System.Windows.Forms.FormWindowState.Normal;
this</span />.Top = 10</span /> ;
this</span />.Left = 10</span />;
this</span />.Width = 400</span /> ;
this</span />.Height = 400</span /> ;
this</span />.Text = "</span />Hello World"</span /> ;
this</span />.Opacity = 100</span /> ;
}
}
12 - we are going to use the label component - press (Enter)

13 - set the label caption, for example and a start write (Hello World)

14 -Now we are in Goal Designer again but we have many steps generated for us after using the (Label) component.nd

Now we have generated the next code
using</span /> System ;
using</span /> System.Drawing ;
using</span /> System.Collections ;
using</span /> System.ComponentModel ;
using</span /> System.Windows.Forms ;
using</span /> System.Data ;
public</span /> class</span /> win1 : Form
{
private</span /> System.Windows.Forms.Label lbl1 ;
public</span /> static</span /> void</span /> Main ( string</span />[] argc )
{
Application.Run( new</span /> win1() );
}
public</span /> win1 ( )
{
this</span />.Load += new</span /> System.EventHandler( this</span />.win1_Load );
this</span />.Click += new</span /> System.EventHandler( this</span />.win1_Click );
this</span />.lbl1 = new</span /> System.Windows.Forms.Label ( );
this</span />.Controls.Add (lbl1);
lbl1.Click += new</span /> System.EventHandler (this</span />.lbl1_Click);
this</span />.lbl1.Top = 10</span /> ;
this</span />.lbl1.Left = 10</span /> ;
this</span />.lbl1.Width = 200</span /> ;
this</span />.lbl1.Height = 30</span /> ;
this</span />.lbl1.Text = "</span />Text Here"</span /> ;
int</span />[] lbl1acolorsfc = {0</span />,0</span />,0</span />} ;
this</span />.lbl1.ForeColor = System.Drawing.Color.FromArgb (lbl1acolorsfc[0</span />],lbl1acolorsfc[1</span />]
,lbl1acolorsfc[2</span />]);
int</span />[] lbl1acolorsbc = {255</span />,255</span />,255</span />} ;
this</span />.lbl1.BackColor = System.Drawing.Color.FromArgb (lbl1acolorsbc[0</span />],lbl1acolorsbc[1</span />]
,lbl1acolorsbc[2</span />]);
this</span />.lbl1.Font = new</span /> Font( "</span />arial"</span /> , 10</span />) ;
}
private</span /> void</span /> win1_Click( object</span /> sender, System.EventArgs e )
{
}
private</span /> void</span /> win1_Load( object</span /> sender, System.EventArgs e )
{
int</span /> [] acolors = {255</span />,255</span />,255</span />} ;
this</span />.BackColor = System.Drawing.SystemColors.Control;
this</span />.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
this</span />.WindowState = System.Windows.Forms.FormWindowState.Normal;
this</span />.Top = 10</span /> ;
this</span />.Left = 10</span />;
this</span />.Width = 400</span /> ;
this</span />.Height = 400</span /> ;
this</span />.Text = "</span />Hello World"</span /> ;
this</span />.Opacity = 100</span /> ;
}
protected</span /> void</span /> lbl1_Click ( object</span /> sender, System.EventArgs e)
{
}
}
select step ([2] Create Controls Here | Open Form Designer From Here )
then click (form designer) button or press ( CTRL+F) using keyboard - more faster

15 - Run the applications ( You could do that by pressing CTRL+R too )

when you run the application the Source code (test.cs) will be extracted from (Steps Tree) then the build process will done and we get our application ready for test

16 - open application folder you will find
Test.cs = Souce code file
Test.exe = application executable file
config.txt = determine the name of source code file + batch file for build process
rpwibuild.bat = build application
Test.SSF & Test.FPT = Source Files for (Programming Without Coding Technology)

17 - Now we are going to design a counter from 1 to 10 using a for-loop and this counter will print number on the console screen and this will happen when the user click the label (label click event).
Select step (Start Here) then press the key (f)

18 - press Enter to use component (For - Loop )

19 - click (Ok) or press (CTRL+W) to end interaction process

20 - Again in Goal Designer and we have three steps generated after using the (For Loop) component
Now we have generated the next code
using</span /> System ;
using</span /> System.Drawing ;
using</span /> System.Collections ;
using</span /> System.ComponentModel ;
using</span /> System.Windows.Forms ;
using</span /> System.Data ;
public</span /> class</span /> win1 : Form
{
private</span /> System.Windows.Forms.Label lbl1 ;
public</span /> static</span /> void</span /> Main ( string</span />[] argc )
{
Application.Run( new</span /> win1() );
}
public</span /> win1 ( )
{
this</span />.Load += new</span /> System.EventHandler( this</span />.win1_Load );
this</span />.Click += new</span /> System.EventHandler( this</span />.win1_Click );
this</span />.lbl1 = new</span /> System.Windows.Forms.Label ( );
this</span />.Controls.Add (lbl1);
lbl1.Click += new</span /> System.EventHandler (this</span />.lbl1_Click);
this</span />.lbl1.Top = 10</span /> ;
this</span />.lbl1.Left = 10</span /> ;
this</span />.lbl1.Width = 200</span /> ;
this</span />.lbl1.Height = 30</span /> ;
this</span />.lbl1.Text = "</span />Text Here"</span /> ;
int</span />[] lbl1acolorsfc = {0</span />,0</span />,0</span />} ;
this</span />.lbl1.ForeColor = System.Drawing.Color.FromArgb (lbl1acolorsfc[0</span />],lbl1acolorsfc[1</span />]
,lbl1acolorsfc[2</span />]);
int</span />[] lbl1acolorsbc = {255</span />,255</span />,255</span />} ;
this</span />.lbl1.BackColor = System.Drawing.Color.FromArgb (lbl1acolorsbc[0</span />],lbl1acolorsbc[1</span />]
,lbl1acolorsbc[2</span />]);
this</span />.lbl1.Font = new</span /> Font( "</span />arial"</span /> , 10</span />) ;
}
private</span /> void</span /> win1_Click( object</span /> sender, System.EventArgs e )
{
}
private</span /> void</span /> win1_Load( object</span /> sender, System.EventArgs e )
{
int</span /> [] acolors = {255</span />,255</span />,255</span />} ;
this</span />.BackColor = System.Drawing.SystemColors.Control;
this</span />.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
this</span />.WindowState = System.Windows.Forms.FormWindowState.Normal;
this</span />.Top = 10</span /> ;
this</span />.Left = 10</span />;
this</span />.Width = 400</span /> ;
this</span />.Height = 400</span /> ;
this</span />.Text = "</span />Hello World"</span /> ;
this</span />.Opacity = 100</span /> ;
}
protected</span /> void</span /> lbl1_Click ( object</span /> sender, System.EventArgs e)
{
for</span /> ( int</span /> x = 1</span /> ; x <= 10</span /> ; x++ )
{
}
}
}
Select the generated step (Start Here) then press letter (c)

20 - press (Enter) to use component (Con Write)

21 - we want to print the value of variable (X)

22 - Again in Goal designer with a step generated after interaction process

Now we have generated the next code
using</span /> System ;
using</span /> System.Drawing ;
using</span /> System.Collections ;
using</span /> System.ComponentModel ;
using</span /> System.Windows.Forms ;
using</span /> System.Data ;
public</span /> class</span /> win1 : Form
{
private</span /> System.Windows.Forms.Label lbl1 ;
public</span /> static</span /> void</span /> Main ( string</span />[] argc )
{
Application.Run( new</span /> win1() );
}
public</span /> win1 ( )
{
this</span />.Load += new</span /> System.EventHandler( this</span />.win1_Load );
this</span />.Click += new</span /> System.EventHandler( this</span />.win1_Click );
this</span />.lbl1 = new</span /> System.Windows.Forms.Label ( );
this</span />.Controls.Add (lbl1);
lbl1.Click += new</span /> System.EventHandler (this</span />.lbl1_Click);
this</span />.lbl1.Top = 10</span /> ;
this</span />.lbl1.Left = 10</span /> ;
this</span />.lbl1.Width = 200</span /> ;
this</span />.lbl1.Height = 30</span /> ;
this</span />.lbl1.Text = "</span />Text Here"</span /> ;
int</span />[] lbl1acolorsfc = {0</span />,0</span />,0</span />} ;
this</span />.lbl1.ForeColor = System.Drawing.Color.FromArgb (lbl1acolorsfc[0</span />],lbl1acolorsfc[1</span />]
,lbl1acolorsfc[2</span />]);
int</span />[] lbl1acolorsbc = {255</span />,255</span />,255</span />} ;
this</span />.lbl1.BackColor = System.Drawing.Color.FromArgb (lbl1acolorsbc[0</span />],lbl1acolorsbc[1</span />]
,lbl1acolorsbc[2</span />]);
this</span />.lbl1.Font = new</span /> Font( "</span />arial"</span /> , 10</span />) ;
}
private</span /> void</span /> win1_Click( object</span /> sender, System.EventArgs e )
{
}
private</span /> void</span /> win1_Load( object</span /> sender, System.EventArgs e )
{
int</span /> [] acolors = {255</span />,255</span />,255</span />} ;
this</span />.BackColor = System.Drawing.SystemColors.Control;
this</span />.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
this</span />.WindowState = System.Windows.Forms.FormWindowState.Normal;
this</span />.Top = 10</span /> ;
this</span />.Left = 10</span />;
this</span />.Width = 400</span /> ;
this</span />.Height = 400</span /> ;
this</span />.Text = "</span />Hello World"</span /> ;
this</span />.Opacity = 100</span /> ;
}
protected</span /> void</span /> lbl1_Click ( object</span /> sender, System.EventArgs e)
{
for</span /> ( int</span /> x = 1</span /> ; x <= 10</span /> ; x++ )
{
Console.WriteLine( x );
}
}
}
23 - Press (CTRL+R) to run and test the application

24 - Now we are going to change the label caption from (Hello World) to (Count from 1 to 10)
To do that select the step (create label lbl1) then click (Modify) button or press (CTRL+Y)

25 - Set the label caption then press (CTRL+W) or click (Ok) button

26 - Again we are in goal designer but the label caption is changed

Now we have generated the next code
using</span /> System ;
using</span /> System.Drawing ;
using</span /> System.Collections ;
using</span /> System.ComponentModel ;
using</span /> System.Windows.Forms ;
using</span /> System.Data ;
public</span /> class</span /> win1 : Form
{
private</span /> System.Windows.Forms.Label lbl1 ;
public</span /> static</span /> void</span /> Main ( string</span />[] argc )
{
Application.Run( new</span /> win1() );
}
public</span /> win1 ( )
{
this</span />.Load += new</span /> System.EventHandler( this</span />.win1_Load );
this</span />.Click += new</span /> System.EventHandler( this</span />.win1_Click );
this</span />.lbl1 = new</span /> System.Windows.Forms.Label ( );
this</span />.Controls.Add (lbl1);
lbl1.Click += new</span /> System.EventHandler (this</span />.lbl1_Click);
this</span />.lbl1.Top = 10</span /> ;
this</span />.lbl1.Left = 10</span /> ;
this</span />.lbl1.Width = 200</span /> ;
this</span />.lbl1.Height = 30</span /> ;
this</span />.lbl1.Text = "</span />Count from 1 to 10"</span /> ;
int</span />[] lbl1acolorsfc = {0</span />,0</span />,0</span />} ;
this</span />.lbl1.ForeColor = System.Drawing.Color.FromArgb (lbl1acolorsfc[0</span />],lbl1acolorsfc[1</span />]
,lbl1acolorsfc[2</span />]);
int</span />[] lbl1acolorsbc = {255</span />,255</span />,255</span />} ;
this</span />.lbl1.BackColor = System.Drawing.Color.FromArgb (lbl1acolorsbc[0</span />],lbl1acolorsbc[1</span />]
,lbl1acolorsbc[2</span />]);
this</span />.lbl1.Font = new</span /> Font( "</span />arial"</span /> , 10</span />) ;
}
private</span /> void</span /> win1_Click( object</span /> sender, System.EventArgs e )
{
}
private</span /> void</span /> win1_Load( object</span /> sender, System.EventArgs e )
{
int</span /> [] acolors = {255</span />,255</span />,255</span />} ;
this</span />.BackColor = System.Drawing.SystemColors.Control;
this</span />.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
this</span />.WindowState = System.Windows.Forms.FormWindowState.Normal;
this</span />.Top = 10</span /> ;
this</span />.Left = 10</span />;
this</span />.Width = 400</span /> ;
this</span />.Height = 400</span /> ;
this</span />.Text = "</span />Hello World"</span /> ;
this</span />.Opacity = 100</span /> ;
}
protected</span /> void</span /> lbl1_Click ( object</span /> sender, System.EventArgs e)
{
for</span /> ( int</span /> x = 1</span /> ; x <= 10</span /> ; x++ )
{
Console.WriteLine( x );
}
}
}
Note that this line of code
this</span />.lbl1.Text = "</span />Hello World"</span /> ;
Changed to
this</span />.lbl1.Text = "</span />Count from 1 to 10"</span /> ;
27 - Press (CTRL+R) to run

Now we have our sample completed....
Points of Interest
1 - Design code instead of writing it then let the machine write the code for you
2 - No Syntax errors .... CSharPWCT avoid syntax errors from the begining
3 - Max. Readability.... through GUI instead of text-based code editor
4 - Max. Writablity using keyboard-shourtcuts
5 - Easy to use for beginners and helpful in education and still very practical for
professionals
To Be Continue
Part (2)