你好,这里是BIM的乐趣,我是九哥~ 本次我们来演示一下标签和按钮的用法,在上次教程的基础上添加一个标签来记录按钮的点按次数。 为了让程序做一些有用的事情,它需要为用户提供一种输入方式,并能够对该输入作出适当的响应。 对于"Rich Client GUI"程序,接收输入的不同方式亲切地称为小部件。其中包括菜单、按钮、工具栏、复选框和文本输入框(等等),我们都习惯了在 .NET 中称这些为控件。 为了响应用户输入,程序需要在 GUI 中布局这些小部件,并设置当用户执行选择菜单项或单击按钮等操作时要调用的函数。 Windows Form API 使创建小部件和注册回调函数变得非常简单,布局有时可能有点奇怪,但这就是程序。 事实上,所有的小部件都是控件,这意味着它们都是从 .NET 基类控件继承的。当你浏览文档以查看单个小部件时,通常会在属性和方法旁边看到"从控件继承"的短语。这是非常方便的。一旦你知道如何设置一个小部件的宽度、高度或位置,你就知道如何为所有这些小部件设置宽度、高度或位置。 好了,胡扯够了,我们来玩一个小部件吧。最基本的小部件是标签,它在 GUI 上显示文本。 标签如果在 Label 类文档页上查看示例代码,可以在 C# 中查看以下内容: Label label1 = new Label(); 因此,我们可以看到 Label 构造函数不采用参数。 "Label Member"文档页为我们提供了 Label 类的所有属性和方法(公共、私有和受保护的列表)。 为了在其父控件中设置显示的文本、位置和标签大小,我们使用以下属性:
如果我们不专门设置其中任何一个,则将使用默认值。默认文本看起来相当枯燥。 Location属性需要来自System.Drawing命名空间的Point对象来设置它。如代码示例中所示,点使用两个整数初始化。 稍后,我们将添加以下代码到我们的示例:
此代码段的最后一行很重要。要将小部件添加到 GUI,您需要将其添加到其父部件上的控件列表中。所以,你是怎么做的?诸如此类。。。 self.Controls.Add(self.label) 将控件添加到父级的顺序会影响 GUI 的布局。 按钮一个只有标签的 GUI 对我来说也太微不足道了。让我们添加一些交互性,并添加一个按钮。为了使其好玩一些,我们将使我们的程序在按下按钮的时候做一些事情。 正在按下的按钮是一个事件,鼠标单击和按下键也是一样。为了处理事件,我们需要创建一个函数,具有正确的签名(采用正确的参数),并注册它为处理程序。幸运的是, IronPython 让这变得非常容易。 如果查看"Button Members"文档页面,可以查看与按钮关联的所有公共事件的列表。其中大多数是从 Control 类继承的,但我们特别感兴趣的是Click事件。 Click 事件的文档页显示了创建 Click 事件处理程序的C# 示例 : private void button1_Click(object sender, System.EventArgs e) 这声明一个采用两个参数的方法,发送方和事件(此处称为e)。空白意味着它返回什么。 方法签名有助于告诉我们,发送方将是一个对象,事件将是来自系统命名空间的 EventArgs 类的实例。 幸运的是,在按钮单击的情况下,我们可能不需要来自事件的任何信息,我们只是想响应操作。 要知道的导入操作是如何注册事件处理程序。在这里: button = Button()button.Click += self.buttonPressed 只需将事件处理程序函数添加到控件上的事件(使用 += 运算符)。 FunnyForm综合起来,下面是我们第二个示例的完整代码(包括按钮按下方法) :
当按钮被按下时,buttonPressed方法被调用。这将打印一条消息到控制台(删除该消息将是另一个条目的主题)。此消息使用小部件的Text属性。 然后增加计数,并更改标签文本。 当你运行它时,它看起来像这样: 点击几次后,效果如下: 实际上,现在你知道使用 Windows Form创建 GUI 应用程序所需的大多数基本操作,不过在它真正有用之前可能还需要学习更多的知识。 在这篇文章中,我们使用位置将小部件定位在主窗体中。未来我们还会介绍其他布局方法,可以改变小部件,菜单,工具栏和更多的小部件的外观。 好了,今天的分享就到这里,小伙伴们快去自己尝试吧~ |
|