Lecture 6: Advanced GUI Controls. Up to now we have used simple controls such as buttons and textboxes. Now we will review some interactive (e.g. dialog)

Slides:



Advertisements
Similar presentations
Information System Design Lab 5&6. User Interface Design.
Advertisements

 2007 Dr. Natheer Khasawneh. Chapter 13. Graphical User Interface Concepts: Part 1.
Copyright © 2012 Pearson Education, Inc. Chapter 11 MORE WINDOWS CONTROLS & STANDARD DIALOG BOXES.
User Interface Programming in C#: Graphics
IEG3080 Tutorial 3 Prepared by Ryan. Outline Object Oriented Programming Concepts Encapsulation Inheritance Polymorphism Delegation Course Project.
Chapter 12- GUI Concepts I. 12.1Introduction 12.2 Windows Forms 12.3 Event-Handling Model Basic Event Handling 12.4 Control Properties and Layout.
.NET Class 4 – Windows-based Application. WinForm Application Homogeny programming model. Rich class library Classes are shared by all.NET languages.
Graphical User Interface (GUI) A GUI allows user to interact with a program visually. GUIs are built from GUI components. A GUI component is an object.
CVEV 118/698 Visual Basic Lecture 3 Prof. Mounir Mabsout Elsa Sulukdjian Walid El Asmar.
Copyright © 2012 Pearson Education, Inc. Chapter 2 Introduction to Visual C#
DT265-2 Object Oriented Software Development 2 Lecture 3 : Windows Programming Lecturer Pat Browne
1 Windows Printing. 2 Objectives You will be able to Output text and graphics to a printer. Print multipage documents. Use the standard Windows print.
1 Graphical User Interfaces Part 2 Outline Multiple Document Interface (MDI) Windows Visual Inheritance User-Defined Controls.
Dr Dat Tran - Week 4 Lecture Notes 1 MenuStrip Programming Graphical User Interfaces PG (7110) University of Canberra School of Information Sciences &
File Handling. Data Files Programs that can only get data from the user interface are limited. –data must be entered each time. –only small amounts of.
CSCI 3327 Visual Basic Chapter 10: Windows Forms GUI: A Deeper Look UTPA – Fall 2011.
Object Oriented Programming Graphical User Interfaces Dr. Mike Spann
CSCI 3328 Object Oriented Programming in C# Chapter 2: Introduction to Visual C# Programming 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg,
Lecture 7: WinForms & Controls, Part MicrosoftIntroducing CS using.NETJ# in Visual Studio.NET Objectives “Visual Studio.NET ships with a wealth.
Data Binding to Controls Programming in C# Data Binding to Controls CSE 494R (proposed course for 459 Programming in C#) Prof. Roger Crawfis.
Lecture 8 Building an MDI Application. Introduction The MDI (Multiple Document Interface) provides a way to display multiple (child) windows forms inside.
Lecture 4 Advanced Topics Devi, Erick, Reddy. » Declare dynamic component, an example: ˃Create a button Button newBtn = new Button(); ˃Create an array.
Object Oriented Programming Graphics and Multimedia Dr. Mike Spann
C# Programming Lecture 4 “GDI+” PGL01/CSP/2006.
Animation and Double-Buffering. The animation methods described here are based on standard techniques of double-buffering applicable to most high-level.
BIM211 – Visual Programming Objects, Collections, and Events 1.
Chapter 12: Using Controls. Examining the IDE’s Automatically Generated Code A new Windows Forms project has been started and given the name FormWithALabelAndAButton.
Copyright © 2006 by The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill Technology Education Assignment #1 Advanced Computer Programming.
Dr Dat Tran - Week 1 Lecture Notes 1 Windows Forms Programming Graphical User Interfaces PG (7110) University of Canberra School of Information Sciences.
Dr Dat Tran - Week 4 Lecture Notes 1 ToolStrip Programming Graphical User Interfaces PG (7110) University of Canberra School of Information Sciences &
CST238 Week 4 Questions / Concerns? Announcements – Start thinking about project ideas – Test#1 next Monday, 4/28/14 Recap Check-off Take Home Lab#3 New.
File I/O 11_file_processing.ppt
G RAPHICAL U SER I NTERFACE C ONCEPTS : P ART 1 1 Outline Introduction Windows Forms Event-Handling Model - Basic Event Handling.
Chapter 9 - VB.Net by Schneider1 Chapter 9 – Additional Controls and Objects 9.1 List Boxes, Combo Boxes, and the File-Opening Control The List Box Control.
COS240 O-O Languages AUBG, COS dept Lecture 33 Title: C# vs. Java (GUI Programming) Reference: COS240 Syllabus.
Visual C# 2012 How to Program 1. 2  A graphical user interface (GUI) allows a user to interact visually with a program.  Figure 14.1 shows a Visual.
1 Κατανεμημένες Διαδικτυακές Εφαρμογές Πολυμέσων Γιάννης Πετράκης.
Lecture 16: Multithreaded Programming. public partial class Form1 : Form { Thread ct; Thread rt; public static int circle_sleep = 0; public static int.
BIL528 – Bilgisayar Programlama II Introduction 1.
Dynamic Dropdown Lists 1. Objectives You will be able to Use Dropdown Lists to solicit multiple choice user input in an ASPX web page. Populate a Dropdown.
Joe Hummel, PhD Dept of Mathematics and Computer Science Lake Forest College
BIM211 – Visual Programming Interacting with Users Graphics 1.
Visual C# 2012 How to Program © by Pearson Education, Inc. All Rights Reserved.
Lecture 7 Dialog Controls MDI Parent/Child Interaction.
Visual C# 2012 How to Program © by Pearson Education, Inc. All Rights Reserved.
Developing Windows Applications with Visual Studio Windows Forms Controls and Coding Jim Warren – COMPSCI 280 S Enterprise.
C# Data type Chapter 1.
Dr Dat Tran - Week 2 Lecture Notes 1 Forms Programming Graphical User Interfaces PG (7110) University of Canberra School of Information Sciences & Engineering.
Copyright © 2012 Pearson Education, Inc. Chapter 5 Loops, File, and Random Numbers.
CSCI 3328 Object Oriented Programming in C# Chapter 11: Files and Streams -- Exercises 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg,
Lecture 14: File I/O Common Dialogs Toolbox Widgets.
Graphical User Interface Components Version 1.1. Obectives Students should understand how to use these basic Form components to create a Graphical User.
1 Windows Forms II Chapter RadioButton / GroupBox Controls Used to solicit a multiple choice input. Radio buttons work as a group. Selecting one.
Windows form programming. namespace MyNamespace { public class MyForm : System.Windows.Forms.Form { public MyForm() { this.Text = "Hello Form"; }
Introduction to Windows Programming
Graphical User Interface
Computing with C# and the .NET Framework
CSCI 3328 Object Oriented Programming in C# Chapter 2: Introduction to Visual C# Programming UTPA – Fall 2012 This set of slides is revised from lecture.
Object Oriented Programming
CSCI 3327 Visual Basic Chapter 11: Files and Streams
How to Add Images Using an 'openFile' Dialog
MDI Picture Viewer Application
The University of Texas – Pan American
Creating a Windows Forms User Interface
Copyright © 2006 Thomas P. Skinner
The University of Texas – Pan American
CSCI 3328 Object Oriented Programming in C# Chapter 11: Files and Streams -- Exercises UTPA – Fall 2012 This set of slides is revised from lecture slides.
Lecture Set 10 Windows Controls and Forms
Creating Controls Dynamically in C#
Presentation transcript:

Lecture 6: Advanced GUI Controls

Up to now we have used simple controls such as buttons and textboxes. Now we will review some interactive (e.g. dialog) controls available to the C# applications developer. OpenFileDialog and SaveFileDialog and the associated controls interact with the user to determine the location and name of a file to read or write. These common dialogs are not for the purpose of actually reading or writing files. Other advanced controls we will cover here include MessageBoxes with decisions, the Calender, ListBoxes, ComboBoxes, and TabControls. In addition, we continue to review methods for reading and writing text files using StreamReader and StreamWriter. This will be our first look at Multiple Document Interfaces (MDI's). The demo program WidgetDemo is an example of an MDI program that also happens to illustrate the use of several GUI controls. Topics

array.txt Reading a Textfile In the example code ReadTextArray a 10x10 array of integers named array.txt is read and loaded into a two-dimensional array.

string fname = ""; string textline = ""; fname = txtFilename.Text; int j; try { TextReader tr = new StreamReader(fname); n = Convert.ToInt32(tr.ReadLine()); txtDisplay.Text = Convert.ToString(n) + "\r\n"; W = new int[n,n]; for (int i = 0; i < n; i++) { textline = tr.ReadLine(); txtDisplay.Text = txtDisplay.Text + " " + textline + "\r\n"; j = 0; foreach (string subString in textline.Split(' ')) { if (subString != "") { W[i,j] = Int32.Parse(subString); j += 1; } tr.Close(); } catch { txtFilename.Text = "no such file"; } Reading an Array of Integers

private void btnCompute_Click(object sender, EventArgs e) { int sum; string str = ""; txtDisplay.Text = ""; txtDisplay.Text += "\r\n"; for (int i=0; i < n; i++) { sum = 0; for (int j=0; j < n; j++) { sum += W[i, j]; } str += "Row " + Convert.ToString(i) + " = " + Convert.ToString(sum) + "\r\n"; } txtDisplay.Text += str; } Using the Array

array.txt The Benefit of Checking for Empty String

using System.IO; : private void OnFileOpen(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "text files (*.txt)|*.txt"; dialog.ShowDialog(); filename = dialog.FileName; OpenFile(); } private void OnFileSaveAs(object sender, EventArgs e) { if (dlgSaveFile.ShowDialog() == DialogResult.OK) { filename = dlgSaveFile.FileName; SaveFile(); } The Purpose of Common File Dialogs: to retreive a path and filename

try { printDocument.Print(); } catch (InvalidPrinterException ex) { MessageBox.Show(ex.Message, "Print Ticket", MessageBoxButtons.OK, MessageBoxIcon.Error); } : private void printDocument_PrintPage(object sender, PrintPageEventArgs e) { Bitmap center = new Bitmap("ticket_header_center.jpg"); string line = ""; line = txtFirst.Text + " " + txtLast.Text; e.Graphics.DrawString(line, new Font("Arial", 12),Brushes.Black, 20, 240); line = txtStreet.Text; e.Graphics.DrawString(line, new Font("Arial", 12), Brushes.Black, 20, 260); line = txtCity.Text + ", " + txtState.Text + " " + txtZip.Text; e.Graphics.DrawString(line, new Font("Arial", 12), Brushes.Black, 20, 280); e.Graphics.DrawImage(center,275, 20); } Printing a Document with Images and Text

The Toolbox Widget Demo The Widget Demo is an example of an MDI application Each demo is presented as a Child Form under the Widget menu.

a new mouseChild form is created here and is displayed inside the widgetMain form. establishes widgetMain as the MdiParent of mouseChild

Mouse Demo private Point mpt; public mouseChild(WidgetDemo.widgetMain parent) { InitializeComponent(); this.MdiParent = parent; } private void mouseChild_MouseMove(object sender, MouseEventArgs e) { Point lpt = new Point(); mpt = MousePosition; tbxXpos.Text = Convert.ToString(mpt.X); tbxYpos.Text = Convert.ToString(mpt.Y); Form mschild = this.ActiveMdiChild; lpt = this.Location; tbxrelXpos.Text = Convert.ToString(mpt.X - lpt.X - 6); tbxrelYpos.Text = Convert.ToString(mpt.Y - lpt.Y - 74); } private void mouseChild_MouseDown(object sender, MouseEventArgs e) { MessageBox.Show(Convert.ToString(e.Button) + " button Pressed"); }

public partial class msgBoxChild : Form { private MessageBoxButtons buttonType = MessageBoxButtons.OK; private MessageBoxIcon iconType = MessageBoxIcon.Exclamation; public msgBoxChild(WidgetDemo.widgetMain parent) { InitializeComponent(); this.MdiParent = parent; rbExclamation.Checked = true; rb_OK.Checked = true; } private void btnDisplayMsgBox_Click(object sender, EventArgs e) { if (rb_OK.Checked) buttonType = MessageBoxButtons.OK; if (rb_OKCancel.Checked) buttonType = MessageBoxButtons.OKCancel; if (rb_AbortRetryIgnore.Checked) buttonType = MessageBoxButtons.AbortRetryIgnore; : if (rbQuestion.Checked) iconType = MessageBoxIcon.Question; if (rbStop.Checked) iconType = MessageBoxIcon.Stop; if (rbWarning.Checked) iconType = MessageBoxIcon.Warning; DialogResult result = MessageBox.Show("Your message goes here.", "Custom MessageBox", buttonType, iconType); } messageBox Demo

private void newToolStripButton_Click(object sender, EventArgs e) { picBox.Image = null; this.Width = 200; this.Height = 200; } private void openToolStripButton_Click(object sender, EventArgs e) { int minWidth = 100; int minHeight = 50; string fileName = ""; OpenFileDialog dlg = new OpenFileDialog(); if (dlg.ShowDialog() == DialogResult.OK) { fileName = dlg.FileName; Bitmap img = new Bitmap(fileName); picBox.Image = img; if (img.Width + 10 > minWidth) this.Width = img.Width + 10; else this.Width = minWidth; if (img.Height + 60 > minHeight) this.Height = img.Height + 60; else this.Height = minHeight; } pictureBox Demo

private DateTime dtobj = new DateTime(); public calChild(WidgetDemo.widgetMain parent) { InitializeComponent(); this.MdiParent = parent; } private void monthCalendar_MouseUp(object sender, MouseEventArgs e) { dtobj = monthCalendar.SelectionStart; tbxDay.Text = Convert.ToString(dtobj.Day); tbxMonth.Text = Convert.ToString(dtobj.Month); tbxYear.Text = Convert.ToString(dtobj.Year); tbxDate.Text = Convert.ToString(dtobj.Date); tbxDayOfYear.Text = Convert.ToString(dtobj.DayOfYear); tbxDayOfWeek.Text = Convert.ToString(dtobj.DayOfWeek); } monthCalendar Demo

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { linkLabel1.LinkVisited = true; } private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { linkLabel2.LinkVisited = true; System.Diagnostics.Process.Start("notepad"); } private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { linkLabel3.LinkVisited = true; System.Diagnostics.Process.Start(" } linkLabel Demo

private void listBoxFavs_MouseUp(object sender, MouseEventArgs e) { rtbxSelected.Text = ""; foreach (string item in listBoxFavs.SelectedItems) { rtbxSelected.Text += item + "\n"; } listBox Demo

comboBox Demo

private string[,] countrydata = new string[237, 3]; private void load_country_data() { string textline; int colnum; int rownum = 0; StreamReader tr = new StreamReader("country_data.txt"); do { textline = tr.ReadLine(); colnum = 0; foreach (string str in textline.Split('\t')) { if (str != "xxx") { countrydata[rownum, colnum] = str; colnum += 1; } else break; } rownum += 1; } while (textline != "xxx"); tr.Close(); } public comboChild(WidgetDemo.widgetMain parent) { InitializeComponent(); this.MdiParent = parent; load_country_data(); comboCountryList.Text = "Select a Country"; } Reading the country_data File

private void comboCountryList_SelectedIndexChanged(object sender, EventArgs e) { int index = -1; try { index = comboCountryList.SelectedIndex; rtbDisplay.Text = "Selected index = " + Convert.ToString(index) + "\n"; rtbDisplay.Text += "Population = " + countrydata[index,2] + "\n"; rtbDisplay.Text += "Rank by Population = " + countrydata[index,1] + "\n"; rtbDisplay.Text += "Gross Domestic Product = " + countrydata[index,0] + "\n"; } catch { comboCountryList.Text = "Select a Country"; } ComboBox SelectedIndexChange Event

tabControl Demo public partial class tabChild : Form { private int[] face = new int[4] { 0, 0, 0, 0 }; private Bitmap[] head = new Bitmap[8]; private Bitmap[] eyes = new Bitmap[8]; private Bitmap[] nose = new Bitmap[8]; private Bitmap[] chin = new Bitmap[8]; private bool in_color = true;

public void load_images() { string[] person = new string[] {"churchill", "eastwood", "henryVIII", "joker", "mona", "monroe", "rubens", "vangogh"}; string filename; for (int i = 0; i < 8; i++) { filename = person[i] + "_01.jpg"; head[i] = new Bitmap(filename); filename = person[i] + "_02.jpg"; eyes[i] = new Bitmap(filename); filename = person[i] + "_03.jpg"; nose[i] = new Bitmap(filename); filename = person[i] + "_04.jpg"; chin[i] = new Bitmap(filename); } tabControl Demo Image Load

public void show_face() { if (in_color) { picBoxHead.Image = head[face[0]]; picBoxEyes.Image = eyes[face[1]]; picBoxNose.Image = nose[face[2]]; picBoxChin.Image = chin[face[3]]; } else { Bitmap img0 = new Bitmap(head[face[0]]); Grayscale(ref img0); picBoxHead.Image = img0; Bitmap img1 = new Bitmap(eyes[face[1]]); Grayscale(ref img1); picBoxEyes.Image = img1; Bitmap img2 = new Bitmap(nose[face[2]]); Grayscale(ref img2); picBoxNose.Image = img2; Bitmap img3 = new Bitmap(chin[face[3]]); Grayscale(ref img3); picBoxChin.Image = img3; } tabControl Demo show_face( )

private void btnDisplay_Click(object sender, EventArgs e) { if (rbChurchill_01.Checked) face[0] = 0; if (rbEastwood_01.Checked) face[0] = 1; if (rbHenry_01.Checked) face[0] = 2; if (rbJoker_01.Checked) face[0] = 3; if (rbMona_01.Checked) face[0] = 4; if (rbMonroe_01.Checked) face[0] = 5; if (rbRubens_01.Checked) face[0] = 6; if (rbVanGogh_01.Checked) face[0] = 7; if (rbChurchill_02.Checked) face[1] = 0; if (rbEastwood_02.Checked) face[1] = 1; if (rbHenry_02.Checked) face[1] = 2; if (rbJoker_02.Checked) face[1] = 3; if (rbMona_02.Checked) face[1] = 4; if (rbMonroe_02.Checked) face[1] = 5; if (rbRubens_02.Checked) face[1] = 6; if (rbVanGogh_02.Checked) face[1] = 7; if (rbChurchill_03.Checked) face[2] = 0; if (rbEastwood_03.Checked) face[2] = 1; if (rbHenry_03.Checked) face[2] = 2; if (rbJoker_03.Checked) face[2] = 3; if (rbMona_03.Checked) face[2] = 4; if (rbMonroe_03.Checked) face[2] = 5; if (rbRubens_03.Checked) face[2] = 6; if (rbVanGogh_03.Checked) face[2] = 7; if (rbChurchill_04.Checked) face[3] = 0; if (rbEastwood_04.Checked) face[3] = 1; if (rbHenry_04.Checked) face[3] = 2; if (rbJoker_04.Checked) face[3] = 3; if (rbMona_04.Checked) face[3] = 4; if (rbMonroe_04.Checked) face[3] = 5; if (rbRubens_04.Checked) face[3] = 6; if (rbVanGogh_04.Checked) face[3] = 7; show_face(); } There is a better way to deal with large numbers of Widget properties... for example, How would you create an array of radioButtons? Selecting face for Display

public partial class gdiChild : Form { protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; Random rnd = new Random(); Pen MyPen = new Pen(Color.Red); Point a = new Point(50, 50); Point b = new Point(250, 250); for (int i = 0; i < 100; i++) { a.X = rnd.Next(10, this.Width - 30); a.Y = rnd.Next(10, this.Height - 60); b.X = rnd.Next(10, this.Width - 30); b.Y = rnd.Next(10, this.Height - 60); MyPen.Color = Color.FromArgb(rnd.Next(0, 255), rnd.Next(0, 255), rnd.Next(0, 255)); g.DrawLine(MyPen, a, b); } GDI+ Drawing Demo onPaint is used for cleaning up windows after move and resize events...not for drawing

private void PaintThis() { Graphics g = pictureBox1.CreateGraphics(); Random rnd = new Random(); Pen MyPen = new Pen(Color.White); g.Clear(Color.White); Point a = new Point(50, 50); Point b = new Point(250, 250); for (int i = 0; i < 100; i++) { a.X = rnd.Next(10, this.Width - 30); a.Y = rnd.Next(10, this.Height - 60); b.X = rnd.Next(10, this.Width - 30); b.Y = rnd.Next(10, this.Height - 60); MyPen.Color = Color.FromArgb(rnd.Next(0, 255), rnd.Next(0, 255), rnd.Next(0, 255)); g.DrawLine(MyPen, a, b); } gphChild Improves Drawing with GDI+ build your own methods for drawing. This method is called with a click-event for the picturebox no auto-draw implemented