Lesson 1 – Print Functionality

The PrintDocument Component


Creating PrintDocument object


How Printing Works


PrintPage event


// Method to handle PrintPage event

public void PrintElipse(object sender, System.Drawing.Printing.PrintPageEventArgs e)

{

e.Graphics.DrawElipse(Pens.Black, e.MarginBounds);

}



Printing Content


PrintPreviewControl


myPrintPreview.Document = myPrintDocument;



myPrintPreview.InvalidatePreview();



PrintPreviewDialog


Printing Configuration


PrintDialog


PrintDialog1.ShowDialog();


PrintSetupDialog


Configure PageSetting at run time


Lesson 2 – Accessing and Invoking Components

.NET and COM Type Libraries


Web Service


public class AsyncDemo

{

WebService1 myService;

public void CallMethodAsynchronously()

{

myService = new WebService1();


// Create AsyncCallback delegate

System.AsyncCallback myCallback = new

System.AsyncCallback(CallBack);

// Object required by method call but not

// used

myService.BeginMyMethod(myCallback, new

Object());

}


public void CallBack(IAsynResult e)

{

string myString;

myString = myService.EndMyMethod(e);

}

}



Accessing Windows API


[System.Runtime.InteropServices.DllImport(“kernel32”)]

private static extern int Beep(int dwFreq, int dwDuration);


Lesson 3 Accessibility

Design


Program Accessibility

Support Standard System Settings


High Contrast


Keyboard Access


Notify Keyboard Focus Location


Do not rely on sound alone


Accessibility Properties


Lesson 4 – Implementing Help

The Help Class


Help.ShowHelp(MyForm, @”C:\myHelpFile.htm”, “HelpMenu”);



Help.ShowHelpIndex(MyForm,@”C:\myHelpFile.htm”);


HelpProvider Component


myHelpProvider.GetHelp(Button1);


Lesson 5 – Globalisation and Localisation



System.Threading.Thread.CurrentThread.Currentculture =

new System.Globalization.CultureInfo(“fr-CA”);



CultureInfo myCurrentculture =

CultureInfo.CurrentCulture;


Globalisation


Label1.Text = “$500”


Whereas setting to value formatted to currency will result in “£500” being displayed for en-GB – note no currency conversion takes place


Label1.Text = (500).ToString(“C”);


Localisation




Culture-Specific Formatting


CultureInfo modJPCulture = new CultureInfo(“jp-JN”);

modJPCulture.NumberFormat.CurrencySymbol = “$”;

Thread.CurrentThread.CurrentCulture = modJPCulture;


Right-to-left Display


Character Encodings


// Code page 932 represents Japanese chars

Encoding myEncoding = Encoding.GetEncoding(932);



// Obtain encoding instances

byte[] tgtData;

Encoding srcEncoding = Encoding.GetEncoding(932);

UnicodeEncoding tgtEncoding = new UnicodeEncoding();


// Convert legacy data (in mystring) to bytes

byte[] myData = srcEncoding.GetBytes(myString);


// Perform conversion

tgtData = Encoding.Convert(srcEncoding, tgtEncoding, myData);



UnicodeEncoding myEncoding = new UnicodeEncoding();

char[] myChars;

myChars = myEncoding.GetChars(myBytes);