windows窗体应用_windows 窗体应用程序 c++ 窗体背景 - CSDN
精华内容
参与话题
  • Windows窗体应用程序 WinForm 是 Windows Form 的简称,是基于 .NETFramework 平台的客户端(PC软件)开发技术,一般使用C#编程。 C# WinForm 编程需要创建「Windows窗体应用程序」项目。 .NET 提供了大量 ...

       1)WinForm? Windows窗体应用程序

                  WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术, 一般使用 C# 编程。

           C# WinForm 编程需要创建「Windows窗体应用程序」项目。

          .NET 提供了大量 Windows 风格的控件和事件,我们可以直接拿来使用,上手简单,开发快速。

            Windows窗体应用程序:

                   Windows 窗体应用程序也称为事件驱动程序,也就是通过鼠标单击界面上的控件、通过键盘输入操作控件等操作来触            发控件的不同事件完成相应的操作。例如单击按钮、右击界面、向文本框中输入内容等操作。

      2)创建WinForm程序

                   文件”→“新建”→“项目”命令,弹出如下图所示的对话框。

                       完成 Windows 窗体应用程序的创建,如下图所示

            在每一个 Windows 窗体应用程序的项目文件夹中,都会有一个默认的窗体程序 Form1.cs,并且在项目的 Program.cs 文件中指定要运行的窗体。

            Program.cs

       3)控件和向工具箱中添加新的控件

                     选择“视图”→“工具箱”,如下图所示:

              在工具箱中将控件划分为公共控件、容器、菜单和工具栏、数据、组件、打印、对话框等组。

                                     

                      向工具箱中添加新的控件, 或者对工具箱中的控件重置或进行分组         

                                                   

                      在右键菜单中选择“选择项”命令,弹出如下图所示的对话框。

               在该对话框中列出了不同组件中所带的控件,如果需要在工具箱中添加,直接选中相应组件名称前的复选框即可。

              如果需要添加外部的控件,则单击“浏览”按钮,找到相应控件的 .dll .exe 程序添加即可。

               

     

     

     

     

     

     

     

     

    展开全文
  • 如何创建一个最简单的Windows桌面应用程序 (C++)

    万次阅读 多人点赞 2017-02-07 15:27:13
    如何创建一个最简单的Windows桌面应用程序 (C++) ... 进入正题,本文讨论如何使用Visual Studio生成一个最简单的C窗体应用程序,并向用户显示Hello~  下面我们一步步来介绍,对于涉及代码的地方,我们


    如何创建一个最简单的Windows桌面应用程序 (C++)


         最近刚开始学习C/C++开发Windows应用程序,这里将会以零基础的视角把学习过程完全记录下来。如果你也刚刚起步,那本文一定非常适合你。

         进入正题,本文讨论如何使用Visual Studio生成一个最简单的C窗体应用程序,并向用户显示Hello~

         下面我们一步步来介绍,对于涉及代码的地方,我们只介绍大体的框架,完整的代码会在文章最后给出。   

         创建基于 Win32 的项目

         1.在文件菜单上,单击新建,然后单击项目。

         2.在“新建项目”对话框的左窗格中,依次单击“已安装模板”和“Visual C++”,然后选择“Win32”。在中间窗格中,选择“Win32 项目”。在“名称”框中,键入项目名称,例如HelloApp。单击“确定”。

         3.在“Win32 应用程序向导”的欢迎页面中,单击“下一步”。在“应用程序设置”页的“应用程序类型”下,选择“Windows 应用程序”。 在“附加选项”下,选择“空项目”。 单击“完成”以创建项目。

         4.在“解决方案资源管理器”中,右键单击 HelloApp项目,然后依次单击“添加”和“新建项”。 在“添加新项”对话框中选择“C++ 文件(.cpp)”。 在“名称”框中,键入文件名,例如GT_HelloWorldWin32.cpp。单击“添加”。

         添加引用

         我们的应用程序需要使用许多现有定义才能完成所需功能,针对我们的需求,添加引用如下(其中前两个是必须的):

    #include <windows.h> 
    #include <stdlib.h> 
    #include <string.h> 
    #include <tchar.h> 

         WinMain函数     

         正如每个 C/C++控制台应用程序在起始点必须具有 main 函数,每个基于 Win32 的应用程序的函数也必须具有 WinMain 函数。WinMain就相当于是入口函数,并且具有固定的语法:

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow); 

         实现WinMain函数时内部逻辑大体相同,主要有以下几部分:

         1.创建描述窗体信息的窗口类结构WNDCLASSEX 

         如何创建一个 WNDCLASSEX 类型的窗口类结构?下面的代码演示了一个典型的窗口类结构WNDCLASSEX 的定义:

    //创建 WNDCLASSEX 类型的窗口类结构。 此结构包含关于窗口的信息
    	//例如应用程序图标、窗口背景色、标题栏中显示的名称、窗口过程函数的名称等。
    	WNDCLASSEX wcex; 
    	wcex.cbSize = sizeof(WNDCLASSEX); 
    	wcex.style          = CS_HREDRAW | CS_VREDRAW; 
    	wcex.lpfnWndProc    = WndProc; 
    	wcex.cbClsExtra     = 0; 
    	wcex.cbWndExtra     = 0; 
    	wcex.hInstance      = hInstance; 
    	wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); 
    	wcex.hCursor        = LoadCursor(NULL, IDC_ARROW); 
    	wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1); 
    	wcex.lpszMenuName   = NULL; 
    	wcex.lpszClassName  = szWindowClass; 
    	wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); 

         对于初学者,我们不用过分纠结代码的细节,暂时从宏观上把控。我们需要知道,此结构包含关于窗口的信息,例如应用程序图标、窗口背景色、标题栏中显示的名称、窗口过程函数的名称等。
         2.对窗口类进行注册

         现在已创建了窗口类,必须进行注册。

         使用 RegisterClassEx 函数,并将窗口类结构作为参数传递。

       RegisterClassEx(&wcex);

         3.创建并显示窗口

         现在需要使用CreateWindow函数创建窗口

         使用ShowWindow函数显示窗口

         这部分也很好理解,详见文末的代码

         4.侦听消息

         添加用于侦听操作系统所发送消息的消息循环。

         当应用程序收到一条消息时,此循环将该消息调度到 WndProc 函数。WndProc 函数用于对接收的消息进行处理,我们下面会介绍到。 

         该消息循环类似于以下代码:

    // Main message loop: 
    	// 添加用于侦听操作系统所发送消息的消息循环。 
    	// 当应用程序收到一条消息时,此循环将该消息调度到 WndProc 函数以进行处理。 
    	MSG msg; 
    	while (GetMessage(&msg, NULL, 0, 0)) { 
    		TranslateMessage(&msg); //翻译消息
    		DispatchMessage(&msg);  //派遣消息
    	} 

         WndProc 函数

         WndProc 函数用以处理应用程序收到的消息。

         首先需要判断收到的消息类型进而做出不同的处理,这需要使用 switch 语句。
         系统提供了众多的消息命令,例如 WM_PAINT 代表收到了绘图消息,而收到鼠标点击消息的标识是WM_LBUTTONDOWN...

         这里以处理 WM_PAINT 消息为例进行说明。

         要处理 WM_PAINT 消息,首先应调用 BeginPaint,然后处理所有的绘图逻辑,例如在窗口中布局文本、按钮和其他控件,然后调用 EndPaint。 

         对于此应用程序,开始调用和结束调用之间的逻辑是在窗口中显示字符串 “Hello,World!”。 在以下代码中,TextOut 函数用于显示字符串。

    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { 
    	PAINTSTRUCT ps;
    	HDC hdc; 
    	TCHAR greeting[] = _T("Hello, World!"); 
    	switch (message) { 
    		case WM_PAINT: 
    			//要处理 WM_PAINT 消息,首先应调用 BeginPaint
    			//然后处理所有的逻辑以及在窗口中布局文本、按钮和其他控件等
    			//然后调用 EndPaint。 
    			hdc = BeginPaint(hWnd, &ps); 
    
    			// -----------------在这段代码对应用程序进行布局------------------------ 
    			// 对于此应用程序,开始调用和结束调用之间的逻辑是在窗口中显示字符串 “Hello,World!”。
    			// 请注意 TextOut 函数用于显示字符串。
    			TextOut(hdc, 50, 5, greeting, _tcslen(greeting)); 
    			// -----------------------布局模块结束----------------------------------
    
    			EndPaint(hWnd, &ps);
    			break; 
    		case WM_DESTROY: 
    			PostQuitMessage(0); 
    			break;
    		default: 
    			//DefWindowProc缺省窗口处理函数
    			//这个函数是默认的窗口处理函数,我们可以把不关心的消息都丢给它来处理
    			return DefWindowProc(hWnd, message, wParam, lParam); 
    			break; 
    	} 
    	return 0; 
    } 

         程序运行的结果为:


         完整代码

         到此我已经理清了写一个Windows应用程序的主要逻辑

         我是按照Microsoft官方文档进行的学习,详见创建Windows桌面应用程序

         对于更多的细节,代码中给出了详细注释。

    // GT_HelloWorldWin32.cpp 
    // compile with: /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS /c 
    // 这是一个最简单的Win32程序,亦可作为开发桌面应用程序的模板
    
    #include <windows.h> 
    #include <stdlib.h> 
    #include <string.h> 
    #include <tchar.h> 
    
    // ------------------------Global variables---------------------------------
    // 主窗体类名
    static TCHAR szWindowClass[] = _T("win32app"); 
    // 应用程序标题栏处出现的字符串
    static TCHAR szTitle[] = _T("Win32 Guided Tour Application"); 
    
    //HINSTANCE 是Windows里的一中数据类型,是用于标示(记录)一个程序的实例。
    //它与HMODULE是一样的(通用的,这两种类型最终就是32位无符号长整形)。
    //HINSTANCE,分开看就是 HANDLE(句柄) + INSTANCE(实例)
    //实例就是一个程序。用qq来举例:你可以开同时开2个qq号,但是你电脑里的qq软件只有一份。
    //这2个qq号就是qq的2个实例
    HINSTANCE hInst; 
    
    // -------------------------需要预定义的函数放置在此代码块种:---------------------------- 
    
    
    //每个 Windows 桌面应用程序必须具有一个窗口过程函数
    //此函数处理应用程序从操作系统中接收的大量消息。 
    //例如,如果应用程序的对话框中有“确定”按钮,那么用户单击该按钮时,
    //操作系统会向应用程序发送一条消息,通知按钮已被单击。WndProc 负责对该事件作出响应。
    //在本例中,相应的响应可能是关闭对话框。
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 
    
    //-------------------------------------正式内容-----------------------------------------
    
    //主窗体函数(入口过程)
    //每个基于 Win32 的应用程序的函数必须具有 WinMain 函数
    //正如每个 C 应用程序和 C++ 控制台应用程序在起始点必须具有 main 函数
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { 
    	//创建 WNDCLASSEX 类型的窗口类结构。 此结构包含关于窗口的信息
    	//例如应用程序图标、窗口背景色、标题栏中显示的名称、窗口过程函数的名称等。
    	WNDCLASSEX wcex; 
    	wcex.cbSize = sizeof(WNDCLASSEX); 
    	wcex.style          = CS_HREDRAW | CS_VREDRAW; 
    	wcex.lpfnWndProc    = WndProc; 
    	wcex.cbClsExtra     = 0; 
    	wcex.cbWndExtra     = 0; 
    	wcex.hInstance      = hInstance; 
    	wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); 
    	wcex.hCursor        = LoadCursor(NULL, IDC_ARROW); 
    	wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1); 
    	wcex.lpszMenuName   = NULL; 
    	wcex.lpszClassName  = szWindowClass; 
    	wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); 
    	
    	//对已创建的窗口类进行注册。 使用 RegisterClassEx 函数,并将窗口类结构作为参数传递。
    	if (!RegisterClassEx(&wcex)) { 
    		MessageBox(NULL, _T("Call to RegisterClassEx failed!"), _T("Win32 Guided Tour"), NULL); 
    		return 1; 
    	} 
    
    	// Store instance handle in our global variable 
    	// 将句柄实例存储于全局变量中
    	hInst = hInstance; 
    	
    	// CreateWindow 函数的参数解释: 
    	// szWindowClass: the name of the application 
    	// szTitle: the text that appears in the title bar 
    	// WS_OVERLAPPEDWINDOW: the type of window to create 
    	// CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y) 
    	// 500, 100: initial size (width, length) 
    	// NULL: the parent of this window 
    	// NULL: this application does not have a menu bar 
    	// hInstance: the first parameter from WinMain 
    	// NULL: not used in this application 
    	// 返回的HWND是一个窗口的句柄
    	HWND hWnd = CreateWindow( szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 100, NULL, NULL, hInstance, NULL ); 
    	if (!hWnd) { 
    		MessageBox(NULL, _T("Call to CreateWindow failed!"), _T("Win32 Guided Tour"), NULL); 
    		return 1; 
    	} 
    
    
    	// ShowWindow 函数的参数解释: 
    	// hWnd: CreateWindow函数返回的窗口句柄 
    	// nCmdShow: the fourth parameter from WinMain 
    	ShowWindow(hWnd, nCmdShow);
    	// UpdateWindow函数用于更新窗口指定的区域
    	// 如果窗口更新的区域不为空,UpdateWindow函数就发送一个WM_PAINT消息来更新指定窗口的客户区。
    	// 函数绕过应用程序的消息队列,直接发送WM_PAINT消息给指定窗口的窗口过程
    	// 如果更新区域为空,则不发送消息。
    	UpdateWindow(hWnd); 
    
    	// Main message loop: 
    	// 添加用于侦听操作系统所发送消息的消息循环。 
    	// 当应用程序收到一条消息时,此循环将该消息调度到 WndProc 函数以进行处理。 
    	MSG msg; 
    	while (GetMessage(&msg, NULL, 0, 0)) { 
    		TranslateMessage(&msg); //翻译消息
    		DispatchMessage(&msg);  //派遣消息
    	} 
    	return (int) msg.wParam; 
    } 
    
    // //  函数: WndProc(HWND, UINT, WPARAM, LPARAM) 
    // //  目标:  处理主窗体产生的信息
    // //  WM_PAINT消息代表绘制主窗体 
    // //  WM_DESTROY消息代表投递一个退出消息并返回 
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { 
    	PAINTSTRUCT ps;
    	HDC hdc; 
    	TCHAR greeting[] = _T("Hello, World!"); 
    	switch (message) { 
    		case WM_PAINT: 
    			//要处理 WM_PAINT 消息,首先应调用 BeginPaint
    			//然后处理所有的逻辑以及在窗口中布局文本、按钮和其他控件等
    			//然后调用 EndPaint。 
    			hdc = BeginPaint(hWnd, &ps); 
    
    			// -----------------在这段代码对应用程序进行布局------------------------ 
    			// 对于此应用程序,开始调用和结束调用之间的逻辑是在窗口中显示字符串 “Hello,World!”。
    			// 请注意 TextOut 函数用于显示字符串。
    			TextOut(hdc, 50, 5, greeting, _tcslen(greeting)); 
    			// -----------------------布局模块结束----------------------------------
    
    			EndPaint(hWnd, &ps);
    			break; 
    		case WM_DESTROY: 
    			PostQuitMessage(0); 
    			break;
    		default: 
    			//DefWindowProc缺省窗口处理函数
    			//这个函数是默认的窗口处理函数,我们可以把不关心的消息都丢给它来处理
    			return DefWindowProc(hWnd, message, wParam, lParam); 
    			break; 
    	} 
    	return 0; 
    } 



    展开全文
  • Windows窗体应用程序设计小一

    千次阅读 2019-01-07 23:50:06
    一,windows 窗体应用程序是由控件组成的,控件是可以重复使用的类或组件 MessageBoxButtons枚举值及其说明 成员名称 说明 MessageBoxButtons.AbortRetryIgore 消息框包含“终止”,“重试”,...

    首先创建一个简单的windous窗体应用程序,名为Form1
    一,windows 窗体应用程序是由控件组成的,控件是可以重复使用的类或组件

    MessageBoxButtons枚举值及其说明
    成员名称 说明
    MessageBoxButtons.AbortRetryIgore 消息框包含“终止”,“重试”,“忽略”按钮
    MessageBoxButtons.OK 消息框包含“确定”按钮
    MessageBoxButtons.OKCancel 消息框包含“确定”和“取消”按钮
    MessageBoxButtons.RetryCancel 消息框包含“重试”和“取消”按钮
    MessageBoxButtons.YesNo 消息框包含“是”或“否”按钮
    MessageBoxButtons.YesNoCancel 消息框包含“是”,“否”,和“取消”按钮

    DialogResult*枚举值及其说明
    成员名称 说明
    Abort : (对话框的返回值是Abort(通常从标题为“中止”按钮))
    Cancel : ( 对话框的返回值是Cancel(通常从标题为“取消”的按钮发送))
    Ignore:(对话框的返回值是Ignore(通常从标题为“忽略”的按钮发送))
    No:(对话框的返回值是No(通常从标题为“否”的按钮发送))
    None:(从对话框返回了Nothing,这表明有模式对话框继续执行)
    OK:(对话框的返回值是OK(通常从标题为“确定”的按钮发送))
    Retry:(对话框的返回值的Retry(通常从标题为“重试”的按钮发送))
    Yes:(对话框的返回值是Yes(通常从标题为“是”的按钮发送))

    有一个小例子:

    private void button1_Click(object sender, EventArgs e)
            {
                MessageBox.Show("你单击了button1");
            }
    
    

    运行结果:

    在这里插入图片描述

    例如,以下三个语句的结果如下:

    
                MessageBox.Show("三个按钮","信息提示",MessageBoxButtons.AbortRetryIgnore);
                MessageBox.Show("三个按钮","信息提示",MessageBoxButtons.YesNoCancel);
                MessageBox.Show("两个按钮","信息提示",MessageBoxButtons.OKCancel);
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    二,Windows窗体应用程序的结构
    从一个简单的窗体应用程序中可以找到一个Program.cs文件,它是主程序文件,双击该文件名可以看到其代码

    namespace porj1
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    }
    
    

    其中有一个Program静态类,包含一个Main静态方法,这与控制台应用程序相似,所不用的是,通过Application.Run(new Form1())语句执行Form1窗体。这里Form1是启动窗体,如果要执行其他窗体如Form2,只需要将其中的“Form1”改为“Form2”即可。Application类是应用程序类
    另外,每个窗体如Form1对应一个Form1.cs节点,展开它时还会看到Form1.Designer,cs和Form1.resx.前者为窗体设计文件,其代码是由Visual Studio自动生成的,一般不需要修改,后者为其资源文件
    双击Form1.Designer.cs看到其代码,其中用于初始化Form1的代码如下

    private void InitializeComponent()
            {
                this.button1 = new System.Windows.Forms.Button();
                this.SuspendLayout();
                // 
                // button1
                // 
                this.button1.Location = new System.Drawing.Point(211, 104);
                this.button1.Name = "button1";
                this.button1.Size = new System.Drawing.Size(187, 98);
                this.button1.TabIndex = 0;
                this.button1.Text = "button1";
                this.button1.UseVisualStyleBackColor = true;
                this.button1.Click += new System.EventHandler(this.button1_Click);
                // 
                // Form1
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(800, 450);
                this.Controls.Add(this.button1);
                this.Name = "Form1";
                this.Text = "Form1";
                this.ResumeLayout(false);
    
            }
    

    上述代码是由程序员的设计操作转换而来的,是由系统自动生成的,主要包含button1和Form1两部分。其中,this.button1.Click += new System.EvenHandler(this.button1_Click)语句将button1事件Click与对应的事件处理方法button_Click相关联,称为事件订阅,其一般格式为:

    object.Event +=new EventHandle(Method);
    

    其中,EventHandler是.NET Framework预置好的一个特殊的委托。它的形式是固定的。上述语句的意识是,如果对象object发生了Event事件,就交由方法Method来处理。一个对象可以委托多个不同的处理,“+=”用来增加新的委托关系。Method是真正进行事件处理的地方。正因为如此,在执行Form1中用户单击button1时才会执行button1_Click

    三,常用的控件设计
    控件:是包含在窗体上的对象,是构成用户界面的基本元素,也是c#可视化编程的重要工具。使用控件可以减少程序设计中大量重复性的工作。有效的提高设计效率。要快捷的编写出好的应用程序,必须掌握各种控件的功能,用于以及其常用的属性。
    工具箱中包含建立应用程序的各种控件,根据控件的不同用途分为若干个选项卡,可根据用途单击相应的选项卡标签,将其展开,选择需要的控件。
    控件的外观和行为,如控件的大小、颜色、位置以及控件使用方式等特征,是由它的属性决定的。不同的控件拥有不用的属性,并且系统为它提供的默认值也不同。大多数默认值设置比较合理,能满足一般情况下的需求。此外,每个控件还有它专门的属性,大多数控件还包含一些更高级的属性,在进入高级应用程序开发阶段会很有用。

    • 控件共有的属性
      (1)Name属性,可通过此名称来引用这个控件,c#会给每个新产生的控价指定一个默认名,一般由控件类型和序号组成
      (2)Text属性,获取或设置文本的属性,
      (3)尺寸大小(Size)和位置(Location),各种控件一般都有一个设置其尺寸大小和位置的属性,即Size和Location属性。Size属性可用于设置控件的宽度和高度。Location属性可用于设置一个控件相对于它所在窗体左上角的(x,y)坐标值。这两个属性既可以通过输入新的设置值来改变,也可以随着控件的缩放或拖动而改变。
      (4)字体属性(Forn)如果一个控件要显示文字,可通过Forn属性来改变她的显示字体

    设置控件字体的方法是,在“属性”窗口中单击Font属性,它的右边就会显示一个按钮,再单击这个按钮,就弹出一个“字体”对话框,通过“字体”对话框就可以选择所用的字体、字样和字号等。Font也是一个C#类,它的基本属性如下:

    • Name:获取此Font的字体名称
    • Size:获取此Font的大小,单位采用Unit属性指定的单位
    • Unit:获取此Font的度量单位
    • Bold:获取一个值,该值指示此Font是否为粗体
    • Italic:获取一个值,该值指示此Font是否为斜体
    • Strikeout:获取一个值,该值指示此Font是否指定贯穿字体的横线
    • Underline:获取一个值,该值指示此Font是否有下划线
      事实上,采用“字体”对话框就是设置上述属性

    (5)颜色属性(BlackColor和ForeColor)
    控件的背景颜色是由BlackColor属性设置的;控件要显示的文字或图形的颜色,则是由ForeColor属性设置的
    (6)Cursor属性
    Cursor属性主要功能是获取或设置当鼠标指针位于控件上时显示的光标,将Custor分配给控件的Curstor属性,以便更改在鼠标指针位于该控件上的显示的光标
    (7)可见(Visible)和有效(Enabled)属性
    一个控件的可见属性Visible确定了该控件在用户界面上是否可见。一个控件的有效属性Enabled决定了该控件能否被使用。当一个控件的Enabled属性设置为False,它变成灰色显示,单击这个控件时不会起作用。如果一个控件的Visual属性设置为False,则在用户界面上就看不到这个控件,它的Enable属性也就无关紧要。所以,设置的一般原则是控件总是可见的,但不必总是有效的。

    窗体控件:
    窗体(Form)控件是一个容器,其中可以放置其他控件,除了上述共有的属性外,窗体控件还有一些特定的属性
    (1)StartPosition属性:获取或设置执行时窗体的起始位置。取值为Manual时表示窗体的位置由Location属性确定;取值为CenterScreen时表示窗体在当前显示窗口中居中,其尺寸在窗体大小中指定;取值为CenterPatent时表示窗体在其父窗体中居中,等等。
    (2)MaximizeBox属性:获取或设置一个值,该值指示是否在窗体的标题栏中显示“最大化”按钮
    (3)MinimizeBox属性:获取或设置一个值,该值指示是否在该窗体的标题栏中显示“最小化”按钮
    (4)ControlBox属性:获取或设置一个值,该值指示在该窗体的标题栏中是否显示控件框

    窗体控件的一些常用方法:

    1. Activate方法:激活窗体并给予它焦点
    2. Close方法:关闭窗体
    3. Focus方法:为控件设置输入焦点
    4. Hide方法:对用户隐藏控件
    5. Show方法:将窗体显示为五模式对话框。所谓无模式对话框就是在显示该窗体后用户可以不必响应,然后随意切换到其他窗体或程序进行操作。通常情况下,当建立新的窗体时,都默认设置为无模式窗体
    6. ShowDialog方法:将窗体显示为模式对话框。所谓模式对话框及时在屏幕上显示该窗体后用户必须响应,只有在它关闭之后才能操作其他窗体或程序

    事件编程是Windows应用程序设计的基础,在窗体控件上预设了很多事件,当用户设置了某些事件处理方法时,系统会自动捕获事件并执行相应的事件处理方法。当一个窗体启动时,常见窗体事件的处理次序如下:
    (1)本窗体上的Load事件
    (2)本窗体上的Activated事件
    (3)本窗体上的其他Form级事件
    (4)本窗体上包含控件的相关事件

    一个窗体被卸载时,常见的窗体事件的处理次序如下:
    (1)本窗体上的Closing事件
    (2)本窗体上的FormClosing事件
    (3)本窗体上的Closed事件
    (4)本窗体上的FormClosed事件

    展开全文
  • 用C#创建一个简单的windows窗体应用(加法器)

    万次阅读 多人点赞 2018-08-11 19:20:31
    用C#创建一个简单的windows窗体应用 (加法器) 编译环境,本人用的VS2013。 打开vs2013,新建项目 选择C#,创建windows窗体应用 自定义名称及存储位置 创建完成之后界面 从工具箱中添加控件 找不到...

    用C#创建一个简单的windows窗体应用 (加法器)


    • 编译环境,本人用的VS2013。
    • 打开vs2013,新建项目
      新建项目
    • 选择C#,创建windows窗体应用
      窗体应用
      自定义名称及存储位置

    • 创建完成之后界面
      创建完成

    • 从工具箱中添加控件
      添加控件
      找不到工具箱在哪的可能在这里
      工具箱
      我们这次要做的是一个加法器首先在加法器上添加好所需要的控件:
      Button Label TextBox
      控件
      之后排成自己想要的样子

    • 调整控件属性
      单击自己要调整的控件,在vs的右下角会有一个属性窗口,调整属性窗口中外观一栏的Text项目,可以修改控件的显示名称。
      属性
      修改完之后是这样的
      窗口

    • 编写代码
      双击Button控件对该控件进行编程
      在button1_Click方法中写入以下代码
      代码

    if(textBox1.Text.Length==0||textBox2.Text.Length==0)//判断输入是否合法,应该检测输入的是否数字或者不允许输入数字以外的字符比较合适。
    {
        MessageBox.Show("请输入数字");//当输入不合法时,弹出信息窗提示不合法
        return;
    }
    try
    {
        double x = double.Parse(textBox1.Text);//获取文本框1中的内容
        double y = double.Parse(textBox2.Text);//同理
        textBox3.Text = (x + y).ToString();
    }
    catch(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    • 写完之后保存运行
      运行1
      运行2

      • 完成
    展开全文
  • windows应用程序【五】窗口控件

    千次阅读 2018-12-28 14:19:28
    首先还是将窗口的框架直接复制过来  ...windows.h&gt; LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR sz...
  • 微软官方窗体应用程序的中文文档,包含窗体程序的所有基础操作类和方法讲解,简单易懂
  • 几个不错的C#.NET做的WINDOWS窗体应用小程序,主要是献给追求C#.NET窗体设计的朋友,由于时间紧,急于发表,就做了几个,后续开发,尽情期待哦。
  • C#开发Windows窗体应用程序的步骤

    万次阅读 2017-12-11 17:59:17
    使用C#开发应用程序时,一般包括创建项目、界面设计、设置属性、编写程序代码、保存项目、程序运行等6个步骤。...选择“Windows窗体应用(.NET Framework)”、输入项目的名称、选择保存路径,然后单击
  • VS2015创建Windows窗体应用程序(C++)

    万次阅读 2019-07-30 10:11:50
    VS2015没有自带CLR窗体应用程序的模板,在创建窗体应用...相关的操作详见:C++/CLR 使用(VS2012,VS2013,VS2015)编写Windows窗体应用程序 使用联机模板 快速创建Windows窗体应用程序项目 1. 新建项目,点击“单...
  • 本人已经从网上下载了vs2013的Windows窗体应用程序补丁,可是安装后,还是没有?求教大神!!
  • 使用windows窗体应用程序来实现用户名与密码的登录。在本页面项目下右击选择添加一个新建项选取基于服务器的数据库,弹出的页面取消。本页面左侧会出现服务器资源管理器建表,进行一系列操作。连接数据库时也需要...
  • WINDOWS窗体应用程序与WPF应用程序的区别? 用WPF更容易做的漂亮 感觉有以下几个大区别: WPF的线程模型和winform的线程模型不同 WPF到处用到数据绑定,winform在列表中才用的多 WPF支持3D,winform本身没有,...
  • 窗体应用开发(Win Form)入门

    千次阅读 2012-10-03 21:06:14
    要点: C#开发Windows应用程序(就是WinForm)的方法理解...【windows中绝大多数桌面程序都是窗体应用程序WinForm】 窗体应用程序的优点: 可视化所见即所得事件驱动响应复杂操作产生丰富的反馈符合用户
  • vc++2010下第一个窗体应用程序

    万次阅读 2011-07-10 22:05:05
    调试了好久,问了n多人,百度了n多网页,最后还是从在线msdn上找到了参考。 具体实现为: 1.首先创建项目,选择【文件】->【新建】...2.在出现的【新建项目】内选择【Windows窗体应用程序】,如图2所示,并在【名称】
  • Form.cs /* (程序头部注释开始) * 程序的版权和版本声明部分 ... * 文件名称:设计一个窗体 * 作 者: 雷恒鑫 * 完成日期: 2012 年 11 月 04 日 * 版 本 号: V1.0 * 对任务及求解方法的描述部分
  • 使用VS2010创建windows窗体应用程序

    千次阅读 2017-08-22 05:17:18
    使用VS2010创建windows窗体应用程序。在右侧的已安装模板中,选择Visual C#,右边会显示出各种项目类型。这里第一项就是Windows窗体应用程序。 默认状态下,会自动生成一个窗体文件。这个窗体是主启动窗体...
  • VS2010以及以前的版本,创建项目时都可以在CLR下找到“Windows窗体应用程序”的项目模板,但是VS2012以后的版本就没这么方便了。可以通过打开旧版本的项目来修改,也可以像下面这样操作:这里就以VS2015为例,打开VS...
  • C#简单窗体应用程序(一)

    万次阅读 多人点赞 2019-08-07 23:22:03
    例题:创建一个Windows窗体应用程序,在窗体中添加两个按钮,当单击第一个按钮时,显示“我来啦!”,当单击第二个按钮时,显示“我走啦!”。 第一步:创建项目; 文件→新建→项目;选择“项目类型”...
  • c#经典编程实例(四窗体应用程序)

    万次阅读 多人点赞 2013-06-15 18:13:46
    一:.NET中窗体应用程序就是一种GUI程序 窗体创建的两种方式: (1)自动生成的是: Application.Run(new Form1()); 相当于: Form1 f = new Form1(); Application.Run(f); (2)显示新的窗体 Form2 f =...
  • 设计一个Windows应用程序,窗体上有一个TextBox控件、一个Button控件。要求,每当用户单击按钮时,文本框都会增加一行文字来反映单击的次数,例如“第3次单击按钮”。 【解答】 1) 窗体界面如图Ex5-5-1所示;2) ...
1 2 3 4 5 ... 20
收藏数 77,499
精华内容 30,999
关键字:

windows窗体应用