创建新的窗体类

六、新建窗体时,几种窗体的区别 Qt 窗体型的区别 阅读详情

创建新的窗体类

 

到目前为止,我们看到的程序还只是脚本风格,用现有的窗体和控件,快速把窗体放在一起。这种编程风格可用于快速开发单一窗体的应用程序,但是,对于快速创建有多个窗体组成的应用程序,或者创建窗体库以用于其他 .NET 语言时,就会受到限制;在这些情况下,必须采取一种更面向组件(component-oriented)的方法。

通常,创建一个大型的 Windows  窗体应用程序时,有一些窗体需要重复使用;此外,通常希望这些窗体能够相互通信,通过调整彼此的属性或调用彼此的方法。通常是定义新的窗体类,从 System.Windows.Forms 派生,来实现的。清单 8-4 就是这样一个例子,使用第五章介绍的类语法。

 

清单 8-4 创建新的窗体类型

 

open System

openSystem.Windows.Forms

 

// aclass that derives from "Form" and add some user controls

type MyForm() as x =

  inherit Form(Width=174, Height=64)

 

  // create some controls to add the form

  let label = new Label(Top=8, Left=8, Width=40, Text="Input:")

  let textbox = new TextBox(Top=8, Left=48, Width=40)

  let button = new Button(Top=8, Left=96, Width=60, Text="Push Me!")

 

  // add a event to the button

  do button.Click.Add(fun _->

    let form = new MyForm(Text=textbox.Text)

    form.Show())

 

  // add the controls to the form

  do x.Controls.Add(label)

  do x.Controls.Add(textbox)

  do x.Controls.Add(button)

 

  // expose the text box as a property

  member x.Textbox = textbox

 

//create an new instance of our form

let form =

  let temp = new MyForm(Text="My Form")

  temp.Textbox.Text <- "Next!"

  temp

 

[<STAThread>]

do Application.Run(form)

 

图 8-6 是前面代码运行的结果。

图 8-6. 为便于重用而创建新窗体类型

 

在前面的例子中,创建的窗体有三个字段:label、textbox 和 button;然后,就可以用外部代码操作这些字段。在示例的最后,创建这个窗体的实例,然后,设置其 textbox 字段的 Text 属性。

事件能公开窗体的接口,非常像字段。由于一些固有的限制,需要更多一点的工作。其思想是这样的:创建一个新的事件,然后把这个事件保存在类的一个字段中,最后,把这个事件的订阅发给筛选过的事件。下面的例子中,筛选 MouseClick 事件以创建 LeftMouseClick:

 

open System.Windows.Forms

 

// aform with addation LeftMouseClick event

type LeftClickForm() as x =

  inherit Form()

  // create the new event

  let event = new Event<MouseEventArgs>()

 

  // wire the new event up so it fires when the left

  // mouse button is clicked

  do x.MouseClick

  |> Event.filter (fun e-> e.Button = MouseButtons.Left)

  |> Event.add (fun e-> event.Trigger e)

 

  // expose the event as property

  [<CLIEvent>]

  member x.LeftMouseClick = event.Publish

 

以这种基于组件(component-based)的方式创建的窗体,无疑要比以更脚本化方式创建的窗体容易使用;但是,在创建用于其他 .NET 语言的窗体库时,仍有缺陷。更多有关创建 F# 库用于其他 .NET 语言的内容,参考第十三章。

 

 

 

6.2 窗体创建 Access功能区“创建”选项卡的“窗体“组中,提供了多种创建窗体的功能按钮,其中包括: “窗体”、 “窗体设计”和“空白窗体”三个主要的按钮,还有“窗体向导”、 “导航”和“其他窗体”三个辅助按钮。单击“导航”和“其他窗体”按钮还可以展开下拉列表,列表中提供了创建特定窗体的方式。 各个按钮的功能如下: 窗体:最快速地创建窗体的工具,只需要单击一次鼠标便可以创建窗体。使用这个工具创建窗体,来自数据源的所有字段都放置在窗体上。 窗体设计:利用窗体设计视图设计窗体。 ... 阅读详情

相关推荐

Visual Studio 2010创建Windows窗体应用程序

Windows窗体应用程序指的是在Windows操作系统上运行的应用程序,它们使用了Windows窗体库来创建用户界面。Windows窗体应用程序通常具有窗体、按钮、文本框、菜单等控件,用户可以通过与这些控件交互来完成各种任务。开发Windows窗体应用程序一般使用Visual Studio等集成开发环境(IDE),通过拖拽和配置控件,开发人员可以快速地创建用户界面。在创建窗体应用程序时,开发人员可以使用C#、VB.NET等编程语言来编写逻辑代码,与控件进行交互,处理用户输入,展示数据等。

qq_73702550的博客 4030

Windows窗体学这一篇就够了(C#控件讲解)

常用控件包括文本控件、选择控件、分组控件、菜单控件、工具栏控件以及状态栏控件常用控件的作用控件分作用文本控件文本控件可以在控件上显示文本选择控件主要为用户提供选择的项目分组控件使用分组控件可以将窗体中的其他控件进行分组处理菜单控件为系统制作功能菜单,将应用程序命令分组,使它们更容易访问工具栏控件提供了主菜单中常用的相关工具状态栏控件用于显示窗体上的对象的相关信息,或者可以显示应用程序的信息通过设置DateTimePicker控件的CustomFormat属性,可自定义日期时间格式字符串。

weixin_51263756的博客 6万+

Silvaco TCAD仿真例库——肖特基二极管反向击穿特性(案例)

本文详细解析了使用Silvaco TCAD仿真例库进行肖特基二极管反向击穿特性分析的完整案例。通过构建包含浮空P型保护环的平面结构,重点阐述了针对雪崩击穿仿真的关键步骤,包括高精度网格划分、碰撞电离模型(impact selb)的启用以及反向电压的精细扫描策略。文章深入探讨了漂移区掺杂浓度、保护环设计等参数对击穿电压的影响,并提供了实用的调试心得,旨在帮助工程师精准预测和优化功率肖特基二极管的反向耐压能力。

fire9的博客 685

C#学习之旅(二)

C#学习之旅(二)

qq_48034474的博客 3388

C++窗体程序设计(一)窗体WNDCLASSEX

(本文使用VS2017) 在初步学习了c++之后,我们可以着手设计一个窗口程序,但在这之前,我们得知道c++里面是怎么设计窗口的。 开始创建窗口之前,我们需要包含几个关键的头文件: #include <windows.h> #include <stdlib.h> #include <tchar.h> 当然,如果你和我一样,是这么创建的,那么VS2017会自动...

zzwfans的博客 2万+

窗体JFrame

JFrame窗体  当应用程序需要一个窗口时,可以使用JFrame 或其子创建一个对象  窗体默认被系统添加到显示器屏幕上,因此不允 许将一个窗体添加到另一个容器中  JFrame在javax.swing包中 JFrame的构造方法  public JFrame() —— 创建一个无标题的窗口  public JFrame(String title) —— 创建一个标题 为title的窗口 JFrame的常用方法  public void setLocation(int x, int y

静Yu的博客 1041

C#Winform控件随窗体缩放

本页版权归作者和博客园所有,欢迎转载,但未经作者同意必须保留此段声明, 且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。1.在窗体中放一个容器(例如:Panel),并且将容器的Dock属性设置为Fill。窗体中其他控件都放在这个容器中。pos数组保存当前控件中心Left,Top,控件Width,控件Height,控件字体Size。控件中心Left,Top,控件Width,控件Height,控件字体Size。注:原创,转载请指明出处。

chentiebo的博客 649

WPF跳转新窗体

                MainWindow mw = new MainWindow();                 mw.Show();                 this.Hide();//当前窗体隐藏  

qq_31584315的博客 1058

[编程基础] C#自定义调用窗体控件

如果自定义需要调用窗体控件,首先需要将窗体控件的可见级别(Modifiers)设为public。如下图所示: 然后在Form1下定义静态变量form1,并初始化。 class Form1: Form { //在Form1下定义静态变量 public static Form1 form1; public Form1() { Ini...

You and Me 4166

9203复习小结 消息框 新窗体

事件 1,自定义事件 选中控件 点击闪电按钮 选中想要的事件 右边 输入一个方法名称 2,控件的默认事件 双击控件 关于窗体对象 一般情况下,窗体中的this,代表了窗体本身 关闭闭体 this.Close() 新建窗体 新生成一个窗体,得到一个窗体文件,它的本质是一个 在合适的时机,把这个实例化为一个对象 对象.Show() 就可以让新窗体显示出来了 可以通过 新窗体对象.属性 = 值 的方式 给新窗体添加相关的值 消息框 MessageBox.Show(提示内容,提示标签,按钮型,图标型)

pyhui的技术博客 196

java 多窗口_java中怎么做多窗体界面?

这是两种窗体,你写在JButton的事件里就行了java code:/** NewJFrame.java** Created on 2011-3-1, 16:22:14*//**** @author 丁乔武* 398142885@QQ.com*/public class NewJFrame extends javax.swing.JFrame {public NewJFrame() {initCo...

weixin_42412850的博客 922

java 子窗口 swt_java SWT单击按钮打开另个窗体

窗体1publicclassaextendsShell{staticDisplaydisplay;staticashell;publicstaticvoidmain(Stringargs[]){try{display=Display.getDefault();shell=newa(display,SWT.SHELL_TRIM);she...窗体1public class a extends She...

weixin_31083103的博客 825

第二章 Page 38 混合方式UI设计 2.4.2 创建项目并添加资源文件

创建一个Widget Application项目,在向导的创建窗口是,选择基QMainWindow, 新建的名称设置为QWMainWind,并选择生成窗体。您需要先将images文件和里面的内容拷贝到项目文件夹下。

yanzhenxi的博客 413

Visual C#(创建窗体控件)

Windows窗体控件都有是直接或间接地继承自System.Windows.Forms.Control。在.NET中可以利用3种方法创建窗体控件,分别是用户控件,自定义控件,从现有控件派生新的控件。 1.创建用户控件 一般是把已存有的windows控件组合构成一个新用户控件,这种创建方式要从UserControl派生出用户的控件。UserControl从ContainerContro

老猫的专栏 813

【Qt】新建窗体

实现方式 左侧项目树栏,右击项目标题,添加 添加Qt设计师界面,按照引导生成 自动生成界面cpp,h,ui 显示新界面调用show方法即可 扩展补充 设置主窗体关闭时,关闭所有新建窗体 需为新窗体设置属性 this->setAttribute(Qt::WA_QuitOnClose,false); 设置新建的窗体保持置顶 在新建窗体时设置 form = new Form; form->setParent(this); form->setWindowFlags(form_.

weixin_42596474的博客 930

如何:禁用 Windows 窗体 DataGridView 控件的按钮列中的按钮

 中国 - 简体中文  Argentina (Español)Australia (English)Brasil (Português)Canada (English)Canada (Français)中国 (简体中文)Colombia (Español)De

lovegod12的专栏 2292

WINFORM如何只弹出一个子窗体

public partial class Form1:Form{ Form2 f=null; public Form1() { InitializeComponent(); } private void Form1_Click(object sender, EventArg e) { if(f==null||f.IsD...

weixin_30653023的博客 230

期货量化软件:赫兹量化中窗体对象中的图形和鼠标事件的处理

如果我们在窗体对象内按下鼠标按钮,并开始移动它,则应禁用鼠标滚动图表(连同十字光标工具和图表上下文菜单),而窗体本身应跟随光标。新属性的数量不多,但就描述这些属性的枚举常量的数量而言,一些属性的内容相当可观(ENUM_SYMBOL_SECTOR,ENUM_SYMBOL_INDUSTRY)。如果我们在任何窗体外按鼠标键并开始移动光标,整个图表都会移动(如果设置允许),而窗体对象在光标到达时不应做出反应,从而避免后者窗体重新定位。在接下来的文章中,我将逐步为窗体对象创建相同的功能,并继续开发复合图形对象。

Herzqt123的博客 185

Access创建窗体

Access中的窗体(也叫表单)就像商店中的展示柜一样,可以更容易地查看或获取所需的商品。由于窗体是您或其他用户可以通过其添加,编辑或显示存储在Access桌面数据库中的数据的对象,因此窗体的设计是一个重要方面。有很多你可以用Microsoft Access中的窗体进行设计。可以创建两种基本型的窗体 -

unber的博客 1883

OAI-5G开源通信平台实践(一)-安装 部署及RFsimulator基本测试

OAI (Open Air Interface) 是目前开源5G/4G项目中最完善、最成熟的一个,并且仍然在持续更新。其包含基站、终端及核心网网元的代码,可基于x86\arm+射频卡搭建实际硬件平台,也可在x86平台上对rf\phy等层进行模拟,做各网元协议栈的单独测试验证。本文总结了x86平台下,oai的安装及运行方式。包括NTN分支和主分支的rf simulator、nos1、端到端部署等场景的验证流程,同时总结了验证过程中遇到的问题及解决方法。

十年通信老兵的技术修炼之路——从3G到5G,从地面基站到卫星通信。 2882

Vivado平台下AD9653四通道Verilog源代码工程:125M采样率、SPI配置与LVDS接口自动延时调整 · Vivado v2.1

基于Vivado平台的AD9653四通道Verilog源代码工程。该工程实现了125M采样率,支持SPI配置以及LVDS接口自动调整最佳延时功能。文中首先简述了工程背景及其重要性,接着深入探讨了Verilog源代码的具体实现细节,包括SPI配置部分和LVDS接口自动延时调整部分。最后,文章总结了该工程的实际应用效果,并强调了代码中有详细的注释,便于工程师理解和维护。适合人群:具备FPGA开发经验的硬件工程师、嵌入式系统开发者以及对高速数据采集感兴趣的科研人员。使用场景及目标:适用于需要高精度、高采样率数据采集的应用场景,如通信设备、医疗仪器、工业自动化等领域。目标是帮助工程师快速掌握并应用于实际项目中。其他说明:该工程已经在实际项目中得到了验证,证明其可靠性和稳定性。同时,提供了丰富的注释,有助于进一步的学习和改进。

上一篇: 处理 WinForms 事件和事件模块
下一篇: 介绍 Windows Presentation Foundation
心想才事成
博客等级 码龄20年 104粉丝 420原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值