C# & APL+Win Class (April 24-25, 2010)
Sample Training Room at the Hyatt


The class has been held on Saturday & Sunday, April 24-25, 2010 at the Hyatt Regency Bethesda, Bethesda, Maryland, USA, just prior to the APL2000 Conference.

The hotel address is:

Hyatt Regency Bethesda
One Bethesda Metro Center
Bethesda, MD, 20814


This class will teach you:

  • how to use the latest Microsoft .Net technologies to very simply rewrite the User Interfaces of your APL+Win applications in C#
  • how to develop great User Interfaces in C#
  • how to use parts of your APL+Win application workspaces directly from C#
  • how to write Client-Server C# & APL+Win applications
  • how to structure your application as a 3-Tier application
  • how to get prepared for publishing your C# & APL+Win application as a ClickOnce application on Internet

This will be done as a "big 2-days lab" during which you'll use your laptop to transform a pure APL+Win application to a .Net C# application using APL+Win in the background. By the end of the class you'll have written yourself a complete sophisticated Client-Server .Net C# & APL+Win application with an impressive User Interface.

Prerequisites & Preparation Work (optional)

Please bring your Laptop computer for this class: it is important that you get prepared for the class

You do not need to know anything about Microsoft .Net, C# or the .Net Framework prior to attending this class. It has been conceived to let brand new comers discover these technologies.

However, if you have some time available before the class and are too impatient or curious, you might want to do any (or all!) of the following preparation work, but these are not prerequisites:

  1. Watch the first Screencast: Lesson 1: Your First C# Application
  2. Read my little C# Primer page
  3. Read my APL2000 Conference 2008 Paper
  4. Purchase one of the following books: C# 3.0 in a Nutshell or C# 4.0 in a Nutshell and start reading the first 2 chapters (especially Chapter 2).

The class has also been carefully designed so that you'll be able to either type code or, if you prefer or get behind at any time, easily copy/paste code to keep up with the class.


The goals to achieve for anyone attending the class are 3-fold:

  1. discover, understand and learn a good deal of C# and of the Microsoft .Net technologies
  2. write a complete C# & APL+Win Client-Server application with a nice User Interface from start to finish during the class
  3. learn enough and understand enough to start using these technologies by yourself after the class


The benefits of attending this class are:

  1. learn new technologies that should definitely be useful to APL developers
  2. learn how to better structure applications (even pure APL+Win applications)
  3. be able to start writing User Interfaces much more easily than with APL+Win
  4. become able to write faster, more beautiful User Interfaces without little annoying problems (flicker, etc.)
  5. be able to tell your own "customers" that your application is a .Net application (even if it uses APL+Win in the background it is indeed a .Net application when you write it like we do in the class)
  6. be able to use the 10000 classes or so of the .Net Framework in conjunction with APL
  7. stay young and keep up with the best mainstream technologies


During the course of the class you will learn:

    Lots of things about .Net, Visual Studio and Client-Server applications (please read this first)

  • Although the Course Content below is very detailed and listed by topics and although it seem very "technical" to you, this class is really about you "understanding" a new technology and the complete process of writing a C# & APL+Win application from start to finish using Microsoft tools.
  • But most importantly the idea is that YOU make the effort of developing this entire application yourself during the class, with lots of additional information and explanations from me, so that you really experience by yourself how easy it is and all the benefits you'll be able to get from writing such applications.
  • I'll teach how all the bricks fit together and how to cement them in order to get a solid, secure and clean Client+Server application: I'll be explaining a lot of things which are not part of my previous Papers, Articles or Videos on this Web Site
  • Getting Started with Visual Studio

  • how to create a new Windows Forms Project with Visual Studio 2008 or Visual C# Express 2008
  • how to use the various Visual Studio panes
  • how to run your Windows Forms project and stop it
  • how to run your Windows Form Project from Windows Explorer
  • how to use the Properties pane to change properties in Design Mode
  • how to change Properties in the code
  • how to use Intellisense
  • how to create new folders in your project
  • how to run your application in Debug or Release mode
  • how to use the most important Visual Studio shortcut keys
  • how to use the Visual Studio debugger to step through your code
  • how to use the powerful Refactor features of Visual Studio
  • how to add Regions to your code for easier navigation
  • how to add automatic comments to your code
  • how to add new classes to your Project
  • Understanding Important Concepts

  • understand what is a Client-Server application
  • how to organize your application in a 3-Tier application with a Data Layer, a Business Layer and a User Interface Layer
  • what are the benefits of using a 3-Tier application structure
  • Building Forms

  • how to use the Toolbox to populate your Form with controls
  • how to well design a Form using the Visual Studio visual editor
  • how to add menus to your form
  • how to add and configure a toolbar, a status bar in your form
  • how to design an MDI application and how to create child forms
  • how to add new forms to your Project
  • how to visually change Controls order on a form
  • how to design, write and use a Dialog Box
  • how to add Input Validation to a Form or Dialog Box
  • how to write an Olap Cube form
  • Using Controls

  • how to use a lot of controls: Label, TextBox, Button, ListBox, ComboBox ErrorProvider, RadioButton, PictureBox, NumericUpDown, DateTimePicker
  • how to use Controls Properties and Methods
  • how to create Event Handlers
  • how to use the WebBrowser object in a form
  • how to use HTML and CSS in a Windows Form to achieve a great User Interface
  • how to use the DataGridView control
  • Learning C# Basics

  • learn C# basics
  • understand the fundamental importance of types in C#
  • how to call a form from another form modally or modelessly
  • how to communicate between forms
  • how to populate combo boxes the proper way using Binding
  • how to use Binding to populate a DataGridView control
  • Learning the .Net Framework Basics

  • how to use many .Net Framework objects like: string, int, double, DateTime, Convert, StringBuilder, List<>, Application, Image, Font, Color, Size, Point, DataTable, DataRow, DataColumn, etc.
  • understand Collections and Interfaces
  • understand Generics and why you should use them
  • how to use Enums and why they are important to use
  • how to add Drag & Drop capabilities to your application
  • how to use the MessageBox class
  • how to use Common Windows Dialog Boxes
  • Handling Resources

  • how to add images to your Project
  • how to use images on buttons and elsewhere in your Project
  • how to create Resources and embed your images as resources within your application .EXE
  • Interfacing with APL+Win

  • how to add a Reference to a DLL in your project
  • how to include and use the LescasseConsulting.AplServer DLL in your Project
  • how to declare Using statements
  • how to automatically load APL and your workspace when your C# application starts
  • how to automatically close APL when your C# application ends
  • how to call APL functions from a C# application
  • how to pass arguments from C# to APL (even nested arrays)
  • how to return results from APL to C# (even nested arrays)
  • how to write APL Primitives in C# as Helper methods
  • how to maintain state with your APL workspace in your C# application
  • how to pass the AplServer object from one form to another form
  • how to debug the APL side of your application when it runs and an APL error occurs
  • publishing your application as a ClickOnce application on Internet
  • Securing a C# & APL+Win Client Server application

  • Necessity of perfectly securing the Server (APL) Side
  • How to secure the Server (APL) Side
  • How to secure the Client (C#) Side
  • How to propagate Server Side errors and display them on the Client
  • Creating Classes

  • how to add new classes to your Project
  • how to add Properties to your classes
  • how to add Methods to your classes, pass arguments and return results
  • how to write a Constructor and pass arguments to it
  • how to use Automatic Properties
  • how to use methods overloads and understand them


For this class I will provide:

  1. food: breakfast, lunch
  2. very comprehensive Class Support Material

The class itself will start each day at 9:00am sharp.

Please show up at 8:30am or earlier to have time to setup your laptop, install the required files and get some breakfast!

Free Tools

I will provide each attendee with some very useful development free tools like:

  • some useful APL utilities
  • a utility allow you to organize, save and recall snippets of code (APL, C#, etc.)
  • an APL+Win User Command allowing you to copy/paste APL+Win code as Unicode APL characters in Emails, text editors, Word, etc.