Windows窗体应用程序开发
用C语言写windows窗体程序

很多学C的朋友认为C语言只能写DOS程序,而不能像C#那样写windows窗体的程序,这你可就打错特错了,今天我来简单掩饰下C语言怎么利用windows提供出来的API写windows窗体程序。
开发工具VC6.0,开发平台windows7。
首先第一步,打开VC,新建工程,选择win32 application,如下图然后新建一个C语言源文件,这个就不截图了,如果这也不会的话相信你也不会来看这篇帖子~呵呵建好文件以后把一下代码输入进去。
编译即可~代码讲解会下帖子下方1.#include <windows.h>2.3.LRESULT CALLBACK Windo WP roc(4. HWND hwnd, //handle to window5. UINT uMsg, //message identifier6. WPARAM wParam, //first message parameter7. LPARAM lParam //second message parameter8. );9.10.11.int WINAPI WinMain(HINSTANCE hInstance,12. HINSTANCE hPrevInstance,13. L PS TR lpCmdLine,14. int nShowCmd15. )//入口函数16.{17. WNDCLASS wndclass;18. HWND wndhwnd;19. MSG msg;20. wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//加载图标21. wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//加载鼠标样式22. wndclass.style=CS_VREDRAW | CS_HREDRAW;//窗口样式23. wndclass.lpfnWndProc=WindowProc;//窗口过程回调函数24. wndclass.cbClsExtra=0;//类额外内存25. wndclass.cbWndExtra=0;//窗口额外内存26. wndclass.hInstance=hInstance;//27. wndclass.hbrBackground=(HBRUSH)GetStockObject(SYSTEM_FONT);//窗口颜色28. wndclass.lpszMenuName=NULL;//窗口菜单29. wndclass.lpszClassName="testWindow";//窗口类名30.31. RegisterClass(&wndclass);32. wndhwnd=CreateWindow("testWindow","windows",WS_OVERLAPPEDWINDOW& ~WS_MAXIMIZEBOX,33. CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,34. NULL,NULL,hInstance,NULL);35. ShowWindow(wndhwnd,SW_SHOWNORMAL);36. UpdateWindow(wndhwnd);37. while(GetMessage(&msg,NULL,0,0))38. {39. TranslateMessage(&msg);40. DispatchMessage(&msg);41. }42.43. return 0;44.}45.46.LRESULT CALLBACK WindowProc(47. HWND hwnd, //handle to window48. UINT uMsg, //message identifier49. WPARAM wParam, //first message parameter50. LPARAM lParam //second message parameter51. )52.{53. HDC hdc,hDC;54. PAINTSTRUCT ps;55. char szchar[20];56. static int i=0;57. switch (uMsg)58. {59. case WM_PAINT://窗口重绘消息,窗口加载和重绘的时候产生该消息60. hdc=BeginPaint(hwnd,&ps);61. TextOut(hdc,0,0,"窗口加载完成",strlen("窗口加载完成"));//往窗口输出文本62. //MessageBox(hwnd,"Hello World","Hi",MB_OK);63. EndPaint(hwnd,&ps);64.65. break;66. case WM_CHAR://处理键盘按键消息67. sprintf(szchar,"char is %c",wParam);68. MessageBox(hwnd,szchar,"提示",MB_OK);69. break;70. case WM_LBUTTONDOWN://处理鼠标左键按下消息71. MessageBox(hwnd,"mouse click","提示",MB_OK);72. hDC=GetDC(hwnd);73. TextOut(hDC,0,50,"鼠标事件处理时显示文字",strlen("鼠标事件处理时显示文字"));74. ReleaseDC(hwnd,hDC);75. break;76. case WM_CLOSE://窗口关闭消息77. if(IDYES==MessageBox(hwnd,"你确定要关闭吗?","提示",MB_YESNO))78. DestroyWindow(hwnd);79. break;80. case WM_DESTROY:81. PostQuitMessage(0);82. break;83. default:84. return DefWindowProc(hwnd,uMsg,wParam,lParam);//使用缺省值来调用窗口过程函数85. }86. return 0;87.}复制代码要说明的事,windows程序必须包含的头文件就是windows.h,而程序的入口函数叫做WinMain(dos的入口函数叫main),如果搞不清有几个参数,参数怎么写,可以查阅MSDN,WindowProc函数是窗口过程函数,也就是处理窗口消息的函数;先来看winamin函数内部,首先定义了一个WNDCLASS类型的数据,这个类型是windows 提供出来的结构体,他里面有10个成员。
devexpress winform 项目开发实例

DevExpress WinForms 提供了一套丰富的控件,用于创建具有专业外观和感觉的Windows Forms 应用程序。
以下是一个简单的DevExpress WinForms 项目开发实例,它演示了如何使用DevExpress WinForms 控件来创建一个简单的窗口,并显示一些数据。
首先,确保你已经安装了DevExpress WinForms 控件库。
你可以从DevExpress 官网下载并安装它。
步骤1: 创建一个新的Windows Forms 项目打开Visual Studio,选择“创建新项目”,选择“Windows Forms 应用(支持.NET Framework)”模板,并给你的项目命名。
步骤2: 从工具箱拖放控件到窗体上在工具箱中找到DevExpress WinForms 控件,例如dxGrid、dxBarManager、dxTreeList 等。
将这些控件拖放到窗体上。
步骤3: 设置控件属性在属性窗口中设置控件的属性,例如Text、Dock、Anchor 等。
步骤4: 编写代码以填充数据和事件处理程序在代码文件中编写代码以填充数据和事件处理程序。
例如,你可以使用以下代码填充dxGrid 控件:// 假设你有一个名为dataTable 的DataTable 对象,它包含一些数据dataGridView1.DataSource = dataTable;// 为数据表中的列设置列头文本dataGridView1.Columns["column1"].Caption = "列1";dataGridView1.Columns["column2"].Caption = "列2";dataGridView1.Columns["column3"].Caption = "列3";// 如果需要处理某些事件,例如单击事件,可以添加事件处理程序dataGridView1.KeyDown += newKeyEventHandler(dataGridView1_KeyDown);步骤5: 运行和测试应用程序点击“开始”或“运行”按钮来运行应用程序,检查用户界面是否符合预期,以及应用程序是否按预期工作。
Windows窗体程序的开发实验报告

精通C#与.NET4.0数据库开发实验报告实验题目:Windows窗体程序的开发专业计算机科学与技术学生XX班级学号教师指导单位日期一、实验目的1.学会在Visual Studio 2021中创立和运行窗体程序。
2.掌握Windows窗体的根本操作。
3.学会使用常用的Windows控件。
4.学会使用菜单和工具栏以及通用对话框。
二、实验环境.NET框架开发环境Visual Studio 2021三、实验内容例5-1、2:源代码:publicpartialclass Form1 : Form{public Form1( ){Initializeponent( );}privatevoid AddInputToLog(string input){this.tbLog.AppendText("\r\n" + input);this.tbLog.ScrollToCaret( );}privatevoid btnSubmit_Click(object sender, EventArgs e) {string input = this.tbInput.Text;this.AddInputToLog(input);this.tbInput.Clear( );}}例5-3、4:源代码:publicpartialclass FrmMain : Form{public FrmMain( ){Initializeponent( );}privatevoid btnSetProp_Click(object sender, EventArgs e){this.Text = "测试对话框";this.FormBorderStyle = FormBorderStyle.FixedDialog;this.BackColor = Color.Gray;this.WindowState = FormWindowState.Normal; this.MinimizeBox = false;this.Height = 200;this.Width = 400;this.TopMost = true;}private FrmMain _CurrFrm = null;privatevoid btnCreate_Click(object sender, EventArgs e){if(this._CurrFrm == null){this._CurrFrm = new FrmMain( );this._CurrFrm.Show( );}else{this._CurrFrm.Activate( );}}privatevoid btnClose_Click(object sender, EventArgs e){if (this._CurrFrm !=null){this._CurrFrm.Close( );this._CurrFrm = null;}}privatevoid FrmMain_Load(object sender, EventArgs e){}}例5-5:源代码:// label1参数设置bel1.AutoSize = true;bel1.BackColor = System.Drawing.Color.Red;bel1.Font = new System.Drawing.Font("楷体_GB2312",12F, System.Drawing.FontStyle.Regular,System.Drawing.GraphicsUnit.Point,((byte)(134)));bel1.ForeColor = System.Drawing.Color.White;bel1.Location = new System.Drawing.Point(68, 43); = "label1";bel1.Size = new System.Drawing.Size(232, 16);bel1.TabIndex = 0;bel1.Text = "红底白字,楷体小四号, 无边框";bel1.Click += new System.EventHandler(bel1_Click);// label2参数设置bel2.AutoSize = true;bel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;bel2.Font = new System.Drawing.Font("幼圆",15F,System.Drawing.FontStyle.Bold,System.Drawing.GraphicsUnit.Point,((byte)(134)));bel2.Location = new System.Drawing.Point(49, 79); = "label2";bel2.Size = new System.Drawing.Size(289, 22);bel2.TabIndex = 1;bel2.Text = "幼圆小三粗体, Single边框";bel2.Click += new System.EventHandler(bel2_Click); 例5-6:源代码:publicpartialclass Form1 : Form{privateint _Value = 0;//btnShowMsg的Click事件处理函数privatevoid btnShowMsg_Click(object sender, EventArgs e) {MessageBox.Show(string.Format("现在需要: {0} ", this._Value));}//“多一点〞按钮Click事件处理函数privatevoid btnAdd_Click(object sender, EventArgs e){this._Value++;this.lbRes.Text = string.Format("现在需要: {0} ", this._Value);}//“少一点〞按钮Click事件处理函数privatevoid btnSub_Click(object sender, EventArgs e){this._Value--;this.lbRes.Text = string.Format("现在需要: {0} ", this._Value);}}例5-7:源代码:publicpartialclass Form1 : Form{public Form1( ){Initializeponent( );}privatevoid buttons_CheckedChanged(object sender, EventArgs e) {string weeks = "";weeks += ckbWeek1.Checked ? "星期一" :"";weeks += ckbWeek2.Checked ? "星期二" : "";weeks += ckbWeek3.Checked ? "星期三" : "";weeks += ckbWeek4.Checked ? "星期四" : "";weeks += ckbWeek5.Checked ? "星期五" : "";weeks += ckbWeek6.Checked ? "星期六" : "";weeks += ckbWeek7.Checked ? "星期日" : "";string sport = "";sport += rbSword.Checked ? "击剑" : "";sport += rbJump.Checked ? "跳水" : "";sport += rbTiCao.Checked ? "体操" : "";string jiangpai = "";jiangpai += rbGold.Checked ? "金牌" : "";jiangpai += rbSliver.Checked ? "银牌" : "";jiangpai += rbTong.Checked ? "铜牌" : "";this.lbHint.Text = weeks + sport + jiangpai;}}例5-8:源代码:publicpartialclass Form1 : Form{privatevoid Form1_Load(object sender, EventArgs e){this.mtbMobile.Mask = ""; //手机:13后面9个必填数字this.mtbPhone.Mask = "00"; //:4位必填区号,7或8位?this.tbName.Text = "";this.tbUsers.Text = "";}privatevoid btnAdd_Click(object sender, EventArgs e){string usr = string.Format("<{0}>:<{1}>:<{2}>", //产生用户信息this.tbName.Text,this.mtbPhone.Text,this.mtbMobile.Text);//添加到用户记录文本框¨°this.tbUsers.AppendText(usr + System.Environment.NewLine);this.mtbMobile.Text = ""; //清空用户信息this.mtbPhone.Text = "";this.tbName.Text = "";}}例5-9:源代码:publicpartialclass Form1 : Form{public Form1( ){Initializeponent( );}privatevoid Form1_Load(object sender, EventArgs e){//设置cmbHouXuan只能从boBox中的已有候选值选择this bHouXuan.DropDownStyle = boBoxStyle.DropDownList; //lstResult只能执行单项选择,并且对所有值进展排序this.lstResults.SelectionMode = SelectionMode.One;this.lstResults.Sorted = true;this.GeneratebItems( ); //产生boBox中D的可选项}privatevoid GeneratebItems( ){this bHouXuan.Items.Clear( ); //移除原有的数据Random rd = new Random();for (int i = 0; i < 10; i++) //随机生成10个新的数据{string item = string.Format("Item-{0:X8}", rd.Next( ));this bHouXuan.Items.Add(item); //添加到boBox中}this bHouXuan.SelectedIndex = 0; //默认选中第一条}//重新生成boBox中的侯选项privatevoid btnFresh_Click(object sender, EventArgs e){this.GeneratebItems( ); //重新生成bBox中的候选项}//将bBox中选中值¦添加到ListBox中Dprivatevoid btnAddOne_Click(object sender, EventArgs e){//通过boBox.SelectedItem获取当前选中的候选项,然后添加到ListBox中Dstring item = (string)this bHouXuan.SelectedItem;this.lstResults.Items.Add(item);}//从ListBox中移除当前选中项privatevoid btnRemoveOne_Click(object sender, EventArgs e){if (this.lstResults.SelectedIndex >= 0) //如果当前ListBox中有选中条目,移除它{this.lstResults.Items.RemoveAt(this.lstResults.SelectedIndex);}}//从ListBox中移除所有项privatevoid btnRemovAll_Click(object sender, EventArgs e){this.lstResults.Items.Clear( );}}例5-10:源代码:privatevoid btnMsgBox_Click(object sender, EventArgs e){MessageBox.Show("这是第一个消息框,只有确认按钮");//显示最简单的MessageBoxMessageBox.Show("这是二个消息框¨,有标题,只有确认按钮", "第二个消息框");//显示有文本和标题的MessageBox//显示具有文本、标题、确定和取消按钮的MessageBoxMessageBox.Show("这是第三个消息框¨,有标题,只有确认和¨取消按钮","第三个消息框", MessageBoxButtons.OKCancel);//显示具有文本、标题、确定和¨取消按钮、告警图标的MessageBox MessageBox.Show("这是第四个消息框¨,有标题,只有确认和取消按钮,告警图标", "第四个消息框", MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);}例5-11:源代码:private void btnOpenFile_Click(object sender, EventArgs e){OpenFileDialog ofdlg = new OpenFileDialog( );//创立OpenFileDialog对象ofdlg.Filter = "文本文件(*.txt)|*.TXT|Word文件(*.doc)|*.DOC"; //只选择TXT和DOC 扩展名文件ofdlg.Title = "选择文本文件或Word文件"; //设置对话框的标题if(ofdlg.ShowDialog() == DialogResult.OK) //显示对话框,并等待返回{this.tbOpenFileName.Text = ofdlg.FileName; //如果用户选择了文件那么显示到界面}else{this.tbOpenFileName.Text = "还没有选择要翻开的文件"; //没有选择文件,那么显示默认提示}}例5-12:源代码:private void btnSetColor_Click(object sender, EventArgs e){ColorDialog cdlg = new ColorDialog( ); //创立ColorDialog对象cdlg.Color = btnSetColor.ForeColor; //设置默认颜色为btnSetColor当前前风光if (cdlg.ShowDialog( ) == DialogResult.OK) //显示对话框,并等待返回{this.btnSetColor.ForeColor = cdlg.Color; //选择了新的颜色,那么更新btnSetColor前风光}}例5-13:源代码:private void btnSetFont_Click(object sender, EventArgs e){FontDialog fdlg = new FontDialog( ); //创立FontDialog对象fdlg.Font = btnSetFont.Font; //设置默认字体为btnSetFont当前字体if (fdlg.ShowDialog( ) == DialogResult.OK) //显示对话框,并等待返回{this.btnSetFont.Font = fdlg.Font; //选择了新的字体,那么更新btnSetFont的字体}}四、实验总结通过此次实验,我学会了在Visual Studio 2021中创立和运行窗体程序;也掌握了Windows窗体的根本操作;学习使用了常用的Windows控件;同时学会了使用菜单和工具栏以及通用对话框。
c#Windows窗体应用程序设计

一个Windows应用程序可以包含多个窗体。
窗体类型 在C#中,窗体分为如下两种类型: (1)普通窗体,也称为单文档窗体(SDI),前面所有创建的窗体均为普
通窗体。普通窗体又分为如下两种: ● 模式窗体。这类窗体在屏幕上显示后用户必须响应,只有在它关闭后才
Program.cs文件 :
using System; using System.Collections.Generic; using System.Windows.Forms; namespace Proj8_1 { static class Program
{ /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); //启动窗体为Form1 }
///否则为false。</param>
protected override void Dispose(bool disposing) //重写基类Dispose()方法
{ if (disposing && (components != null))
{
components.Dispose();
} base.Dispose(disposing); //调用基类的Dispose()方法
关于winform的书籍

关于winform的书籍
- 《Windows窗体程序设计基础教程》:该书系统地介绍了Windows窗体应用程序开发的基础知识和编程方法,内容包括窗体与控件、菜单、工具栏和状态栏、对话框、打印与文件处理等。
- 《C# Windows窗体开发经典实例》:该书通过大量实例全面地介绍了Windows窗体应用程序开发的各个方面,内容涉及窗体设计、图形图像、多媒体、网络通信、数据库等方面。
- 《C# WinForm从入门到精通》:该书从初学者的角度,循序渐进地讲述了使用C#语言和WinForm技术开发Windows应用程序的基本步骤和方法,内容包括WinForm基础、常用控件、高级控件、文件处理、数据库访问等。
这些书籍都可以帮助你深入了解WinForm技术,并提高你的Windows应用程序开发能力。
你可以根据自己的实际情况和需求选择适合自己的书籍。
控件的使用实验报告

一、实验目的1. 熟悉常见控件的功能和使用方法。
2. 学习控件在应用程序中的布局和事件处理。
3. 提高编程实践能力。
二、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C#三、实验内容本次实验主要使用Windows窗体应用程序进行控件的使用,具体内容包括:1. 控件的创建和添加2. 控件的属性设置3. 控件的布局4. 控件的事件处理四、实验步骤1. 创建Windows窗体应用程序(1)打开Visual Studio 2019,选择“创建新项目”。
(2)在“创建新项目”对话框中,选择“Windows窗体应用程序”,命名为“控件实验”。
(3)点击“创建”按钮,完成应用程序的创建。
2. 添加控件(1)在工具箱中找到所需控件,例如:文本框(TextBox)、按钮(Button)、标签(Label)等。
(2)将控件拖拽到窗体上,即可添加控件。
3. 设置控件属性(1)选中控件,在属性窗口中查看和修改控件的属性。
(2)例如,设置文本框的Text属性为“请输入内容”,设置按钮的Text属性为“提交”。
4. 控件布局(1)使用布局工具对控件进行布局,例如:使用水平布局、垂直布局、网格布局等。
(2)调整控件的大小和位置,使界面美观。
5. 控件事件处理(1)双击控件,打开代码编辑器。
(2)在事件处理函数中编写代码,实现所需功能。
(3)例如,在按钮的点击事件中,获取文本框的值并显示在标签中。
五、实验结果与分析1. 创建了包含文本框、按钮、标签的Windows窗体应用程序。
2. 添加并设置了控件的属性。
3. 对控件进行了布局,使界面美观。
4. 编写了按钮点击事件处理函数,实现了获取文本框值并显示在标签中的功能。
六、实验总结通过本次实验,我掌握了以下内容:1. 常见控件的功能和使用方法。
2. 控件在应用程序中的布局和事件处理。
3. 提高了编程实践能力。
在实验过程中,我发现以下问题:1. 对部分控件属性设置不够熟悉,需要加强学习。
.net webservicestudio 源代码

.net webservicestudio 源代码在.NET 开发中,Windows GUI 应用程序称为“Windows 窗体”(或“Winforms”)应用程序。
使用Visual C++ 开发Windows 窗体项目,通常与使用任何其他.NET 语言(如Visual 或C#)进行开发并无不同。
使用Visual C++ 编写的Windows 窗体应用程序通过新的Visual C++ 语法使用.NET Framework 类和其他.NET 功能。
有关更多信息,请参见New C++ Language Features。
在本过程中,您将使用“工具箱”中的几种标准控件创建Windows 窗体应用程序。
用户可以在完成后的应用程序中选择一个日期,此时将出现一个文本标签,显示所选的日期。
创建新的Windows 窗体项目在“文件”菜单上,单击“新建”,然后单击“项目”。
在“项目类型”窗格中,选择“Visual C++”节点中的“CLR”,然后在“模板”窗格中选择“Windows 窗体应用程序”。
键入项目的名称,如“winformsapp”。
您可以接受默认位置、键入一个位置或者浏览到要保存项目的目录。
Windows 窗体设计器即打开,显示所创建项目的“Form1”。
向窗体添加控件如果“工具箱”窗口不可见,请单击“视图”菜单上的“工具箱”。
将“工具箱”中的三个控件放到“Form1”设计图面上:将一个Label 控件拖动到靠近“Form1”左上角的位置。
将一个DateTimePicker 控件拖动到Label 控件正下方。
将一个Button 控件拖动到窗体底部靠近中心点的位置。
设置窗体和控件的属性单击窗体图面上的空白区域以选择窗体。
如果“属性”窗口不可见,请单击“视图”菜单上的“属性”(或者按F4)。
您可能需要关闭“工具箱”以获得更多空间。
设置窗体的“Text”属性(显示在窗体标题栏中),方法是在“属性窗口”中“Text”属性的右侧单击,并键入:日期选择器单击以选择标签,将其“Text”属性设置为:选择日期:单击以选择按钮,将其“Text”属性设置为:“确定”编写事件处理程序代码在本节中,您将编写在发生以下事件时运行的代码:Button 控件上的Click 事件DateTimePicker 控件上的ValueChanged 事件编写代码以处理事件双击按钮以添加按钮Click 事件处理程序(按钮的默认事件为Click 事件)。
windows窗体应用程序设计实验报告

windows窗体应用程序设计实验报告Windows窗体应用程序设计实验报告一、实验目的本次实验的主要目的是让学生掌握Windows窗体应用程序的设计方法和技巧,了解Windows窗体应用程序的基本结构和运行原理,能够熟练使用Visual Studio等开发工具进行程序设计和调试。
二、实验内容本次实验的主要内容包括以下几个方面:1. 熟悉Windows窗体应用程序的基本结构和运行原理。
2. 学习使用Visual Studio等开发工具进行程序设计和调试。
3. 设计一个简单的Windows窗体应用程序,实现基本的界面设计和功能实现。
三、实验步骤1. 熟悉Windows窗体应用程序的基本结构和运行原理。
Windows窗体应用程序是一种基于Windows操作系统的图形用户界面应用程序,它采用了Windows窗体技术,可以实现丰富的用户界面和交互功能。
Windows窗体应用程序的基本结构包括窗体、控件、事件等,其中窗体是应用程序的主界面,控件是窗体中的各种元素,事件是控件与用户交互的响应动作。
Windows窗体应用程序的运行原理是通过.NET Framework提供的Windows Forms 类库实现的,它可以在Windows操作系统上运行,并且可以与其他.NET应用程序进行交互。
2. 学习使用Visual Studio等开发工具进行程序设计和调试。
Visual Studio是一款强大的集成开发环境,可以支持多种编程语言和应用程序类型的开发。
在本次实验中,我们使用Visual Studio 进行Windows窗体应用程序的设计和调试。
具体步骤如下:(1)打开Visual Studio,选择“新建项目”,选择“Windows 窗体应用程序”,命名为“HelloWorld”。
(2)在窗体中添加一个标签控件,设置其文本为“Hello World!”。
(3)在窗体中添加一个按钮控件,设置其文本为“点击我”。
(4)在按钮的Click事件中添加代码,使得点击按钮时标签的文本发生变化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Control类的事件
Control类的方法
Control类的方法
例9-2:图片显示控制
窗体上用图片框显示一张图片。当在图片框上单击鼠 问题 标左键时图片放大10%,单击鼠标右键时图片缩小10%。鼠 描述 标在图片框上移动时,窗体标题显示当前位置坐标。
9.2 常用控件
9.2.1 标签
标签(Label):用于显示用户不能编 辑的文本或图象,起标注或说明作用。
(15)Cursor:
用来获取或设置鼠标移到控件 上时,被显示的鼠标指针的类型。
例9-1:图片的显示和隐藏
在窗体上放置一个图片框、一个“显示”按钮和一个 “隐藏”按钮。开始运行时,图片不可见,“显示“按钮 问题 可用,“隐藏”按钮不可用。单击“显示”按钮后,图片 描述 显示出来,“显示”按钮变成不可用,而“隐藏”按钮变 成可用。
(9)Font: 用来获取或设置控件的字体。 (10)BorderStyle: 用来获取或设置控件的边框。 (11)AutoSize: 用来获取或设置控件是否自动 调整大小。取值为true或false。 (12)Anchor: 获取或设置控件的哪些边缘锚 定到其容器边缘。 (13)Dock: 获取或设置控件停靠到父容器 的哪一个边缘。 (14) TextAlign: 用来确定文本对齐方式。
9.1.1 WinForms概述
文本框
标签
组合框
列表框
按钮
9.1.2 编写GUI应用程序的步骤
(1)创建窗体
GUI(Graphics User Interface),即图形用户 (2)为窗体添加控件 界面,是指用图形的方式 实现人与计算机之间的交 互。 (3)设计控件在窗体中的布局
(4)设置各控件属性 (5)编写代码,响应控件事件
9.1.1 WinForms概述
程序的主入口点 static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } }
9.2.2 按钮
MouseLeave事件练习。
private void button1_MouseLeave(object sender,System.EventArgs e) { this.button1.BackColor=SystemColors.Control; }
9.2.3 文本框 文本框(TextBox):文本框经常用于获 取用户输入或显示文本,通常用于可编辑
9.1.3 Control类
.NET中的大多数控件都派生于System.Windows.Forms.Control
类。Control类实现了所有窗体交互控件的基本功能:处理用户键盘
输入、处理消息驱动、限制控件大小等等。
Control类的属性
Control类的属性
Control类的属性
9.1.4 控件的基本属性 Name:
用来获取或设置控件的名称。名 称是控件的标识。 (2)Text: 用来获取或设置控件的标题文字。 (3)Width和Height: 用来获取或设置控件的大小。 (4)X和Y: 用来获取或设置控件的位置。 (5)Visible: 用来获取或设置控件是否可见。 取值为true或false。 (6)Enabled: 用来获取或设置控件是否对响应 交互。取值为true或false。 (7)ForeColor: 用来获取或设置控件的前景色。 (8)BackColor: 用来获取或设置控件的背景色。
文本,也可以设定其成为只读控件。文本
框能够显示多行数据,并添加基本的格式 设置。
文本框
9.2.3 文本框 文本框的属性、事件与方法
属 性 MaxLength Multiline Passwordchar ReadOnly Text 方 法 说 明
Text属性是文本框最重要的属性,要 可在文本框中输入的最大字符数 显示的文本就包含在Text属性中。Text 表示是否可在文本框中输入多行文本 属性可以在设计窗口时使用属性窗口 设置,也可以在运行时用代码设置或 机密和敏感数据,密码输入字符 者通过用户输入设置,同样也可以在 文本框中的文本为只读 运行时通过读取Text属性来获得文本 检索在控件中输入的文本 框的当前内容。
}
第一个参数 sender 提供对引发事件的对象的引用。第二个参数e传递针 对要处理的事件的对象。通过引用对象的属性(有时引用其方法)可获得 一些信息,如鼠标事件中鼠标的位置或拖放事件中传输的数据。
9.1.5 事件和事件处理
键盘事件:
当用户对键盘进行操作时,系统会产生相应的键盘 事件。当用户按下某个键时,就会发生KeyDown事件,
程序执行流程控制模式:
过程控制模式(非图形用户界面应用程序的传统控制模式)
事件驱动模式(Windows图形用户界面应用程序的控制模式)
9.1.1 WinForms概述
设计窗口
各种控件
属性
放置控件的区域
9.1.1 WinForms概述
基础核心命名空间 using System; 提供了大量绘图工具的访问权限 using System.Collections.Generic; using ponentModel; ArrayList、BitArray、Hashtable、Stack、 using System.Data; StringCollection 和 StringTable 类 using System.Drawing; using System.Text; using System.Windows.Forms; 大量窗体和控件 namespace WindowsApplication3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } 从 System.Windows.Forms.Form 派生 } }
9.2.2 按钮
MouseEnter事件练习。
private void button1_MouseEnter(object
sender,System.EventArgs e)
{ //颜色在System.Drawing名称空间下 this.button1.BackColor=Color.Red; }
用来获取或设置控件的名称。名称是控件的标识。
Text:
用来获取或设置控件的标题文字。
Width和Height:
用来获取或设置控件的大小。
X和Y:
用来获取或设置控件的位置。
Visible:
用来获取或设置控件是否可见。取值为true或false。
9.1.4 控件的基本属性 Enabled:
说 明 用户单击控件时将发生该事件
Click
9.2.2 按钮
按钮(Button):提供用户与应用程序
的交互,单击按钮来执行相应的操作。
按钮
9.2.2 按钮 按钮的属性、事件与方法
属 性 说 明 按钮表面的标题 说 明
Text
方 法
PerformClick 执行Button 控件的 Click 事件 事 件 Click 说 明 用户单击控件时将发生该事件
MouseEnter
MouseLeave
鼠标进入按钮区域时触发
鼠标离开按钮区域时触发
9.2.2 按钮
Click事件练习。
private void button1_Click(object sender,System.EventArgs e) { MessageBox.Show(this,"你点击了[确定]按钮。", "提示信息",MessageBoxButtons.OK, rmation); }
第9章 Windows窗体应用程序开发
本 章 要 点
Windows窗体开发基础 常用Windows控件 Windows菜单设计 工具栏与状态栏设计 通用对话框编程
9.1 Windows窗体编程
9.1.1 WinForms概述
控件
可视化界面组件统称为控件
9.1.1 WinForms概述
9.1.1 WinForms概述
/// <summary> /// 清理所有正在使用的资源。 /// </summary> /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } 释放系统资源
用来获取或设置控件是否自动调整大小。取值为true或false。
Anchor:
获取或设置控件的哪些边缘锚定到其容器边缘。
Dock:
获取或设置控件停靠到父容器的哪一个边缘。
TextAlign:
用来确定文本对齐方式。
Cursor:
用来获取或设置鼠标移到控件上时,被显示的鼠标指针类型。
(1)Name:
随后便发生KeyPress事件。而当用户释放某个键时,发
生KeyUp事件。当用户按住某个键不放时,KeyDown和 KeyPress事件会不停地重复触发。