网站首页 > 技术文章 正文
1.按钮组件
按钮几乎放置在每个对话框上。创建一个新的按钮很简单。使用forms.Button并指定Text显示在按钮面上。除了创建新按钮外,通常还通过.Click事件附加一个操作。使用 +=语法,如下所示将操作绑定到按钮。
self.m_button = forms.Button(Text = 'OK')
self.m_button.Click += self.OnButtonClick
在类定义中稍后列出的绑定方法,如果点击按钮将运行。
Eto.Dialog 类 有两个特殊保留的按钮名称,即 DefaultButton 和 AbortButton。 DefaultButton 名称将创建一个标准按钮,并且如果使用 Enter Key,它将接收点击事件。 AbortButton 是一个按钮,如果使用 键,它将接收 .Click 事件。 这些按钮是通过控件的名称简单分配的,使用 语法。ESCself的语法DefaultButton是:self.DefaultButton = forms.Button(Text = 'OK'); 通常通过使用对话框的DefaultButton方法来关闭对话框AbortButton。请注意,即使对话框已关闭,控件的值仍然可以被脚本的其余部分访问。
2.日历
日历控件用于选择日期或日期范围。语法: self.m_calender = forms.Calendar()
通常在日历控件上设置其他属性。日历控件有许多属性可以用来修改控件的工作方式。
该.Mode属性设置是否只能设置一个日期forms.CalendarMode.Single或通过设置选择日期范围.mode到forms.CalendarMode.Range。
开始MaxDate和.MinDate结束日期属性限制了可以选择的日期范围。
这.SelectedDate将导致该日期最初被选中。
3.复选框
复选框控件可用于指定True和False:,复选框的最简单语法是:
self.m_checkbox = forms.CheckBox(Text = 'My Checkbox')
该Text属性设置控件旁边文本的可见性。默认情况下,CheckBox未选中,并且带有值None。一旦选中,它包含布尔值True。一旦取消选中,值是False。
复选框的初始状态可以在类中设置。通过添加以下行,复选框将默认选中:
self.m_checkbox.Checked = True
4.颜色选择器
要从下拉菜单中选择一种颜色,请使用ColorPicker。此控件还支持下拉箭头上的右键单击菜单。右键单击菜单提供了颜色取样器和标准系统颜色选择器对话框的访问权限。
下面的简单代码将创建一个默认颜色为白色的颜色选择器:
self.m_colorpicker = forms.ColorPicker()
初始默认颜色可以通过在控制中添加代码来设置:
defaultcolor = Eto.Drawing.Color.FromArgb(255, 0,0)
self.m_colorpicker.Value = defaultcolor
5.组合框
组合框是一个下拉列表,允许直接输入文本,
self.m_combobox = forms.ComboBox()
self.m_combobox.DataStore = ['first pick', 'second pick', 'third pick']
默认值可以通过将索引位置添加到DataStore属性来设置:
self.m_combobox.SelectedIndex = 1
6.日期时间选择器
使用 DateTimePicker 选择日期和/或时间. 类似于 Calendar 控件,还有一个 DateTimePicker。可以在控件上设置 .Mode 以显示 .Date 或 .Time。 .Date 版本与 .Calendar 控件不同,通过下拉菜单访问日期:
该.Time模式创建一个可以选定时间的旋转器
self.m_datetimetime = forms.DateTimePicker()
self.m_datetimetime.Mode = forms.DateTimePickerMode.Time
self.m_datetimetime.Value = System.DateTime.Now
self.m_datetimetime.Value = System.DateTime(2017, 1, 1, 23, 43, 49, 500)
7.下拉菜单
下拉菜单包含项目列表。
self.m_dropdownlist = forms.DropDown()
self.m_dropdownlist.DataStore = ['first', 'second', 'third']
默认选择可以通过在DataStore中使用索引位置来设置:
self.m_dropdownlist.SelectedIndex = 1
8.网格视图
一个虚拟化的数据网格,具有可编辑的单元格。 GridView 用于模拟ListView控件, 创建一个.GridView()比其他ETo控件更复杂。首先创建.GridView,然后用forms.GridColumn()填充控件。每个.GridColumn都有一个.HeaderText,.Editable属性,并包含一个.DataCell。可以使用.DataCell显示TextBoxCell或CheckBoxCell。在创建每个.GridColumn后,将其添加到.GridView通过
self.m_gridview.Columns.Add(column1)方法。下面的示例在.GridView中填充了4列:
访问每个单元格的值forms.GridView可以通过使用该值在.DataStore属性中的索引位置来实现。
dialog.m_gridview.DataStore[1][2]
这将在上述示例中导致“第三选择”的值。
9.组框
GroupBox 显示一组控件,这些控件被边框包围,并且可以有可选的标题来标识该组, 就像较大的对话框,forms.GroupBox() 需要一个布局来帮助定位控件。在布局中,控件被放置。一旦控件被创建,控件就会被添加到布局中的行中,然后这些行会被添加到forms.GroupBox的内容中,用行.
10.图片框
用于显示单个位图图像的控件, 为 ImageView 创建一个空间很容易。下面的前 3 行创建了 forms.ImageView() 并设置其大小。填充用于在 forms.ImageView() 中显示的位图格式更为困难。在这个示例中,一个 RHino 视图捕获被转换成一个 drawing.Bitmap() 并设置为 .Image 属性以在 forms.ImageView() 中显示。
位图可以从多种不同的形式进行格式化。在这种情况下,view.CaptureToBitmap()图像通过
Rhino.UI.EtoExtensions.ToEto()方法被转换为Eto位图。
11. 最简单的 Eto 控件是 forms.Label()。它通常是用于为其他控件创建提示、标签、消息或描述的文本。
self.m_label = forms.Label(Text = 'Enter the Room Number:')
和许多控件一样,上面的行为控件创建一个名称m_label。然后,标签的主要属性是通过设置标签的 Text 属性来显示的文本。
通常情况下,标签的复杂程度不需要如此,但标签还有许多更多的属性。附加属性包括VerticalAlignment、Horizontal Alignment、TextAlignment、Wrap、TextColor和Font。属性可以通过在Label()中包含每个关键词,用逗号(,)分隔来添加:
self.m_label = forms.Label(Text = 'Enter the Room Number:', VerticalAlignment = VerticalAlignment.Center)
标签也可以直接在布局中创建。在向布局添加控件时,有一个简写语法会自动生成标签。forms.Label
在添加行或列时,可以插入一个简单的字符串。Eto会自动将字符串转换为一个标签。这是一种非常快速的方法来创建forms.Label。
12.链接按钮
LinkButton 是一个简单的标签,像按钮一样工作,类似于超链接, 像标准按钮一样forms.LinkButton()需要通过+=语法绑定到一个动作.
13.列表框
创建一个可滚动的项目列表以供选择,这个forms.ListBox()和.DataStore是创建一个forms.ListBox所必需的。该
self.m_listbox.SelectedIndex = 1是可选的,并在DataStore中设置默认选择的对象
self.m_listbox = forms.ListBox()
self.m_listbox.DataStore = ['first pick', 'second pick', 'third pick']
self.m_listbox.SelectedIndex = 1
14.数值输入框
使用鼠标通过旋转按钮调整数值的数值控制, 控制点击上或下箭头时旋转器的行为是forms.NumericUpDown()控制的关键.
self.m_numeric_updown = forms.NumericUpDown()
self.m_numeric_updown.DecimalPlaces = 2
self.m_numeric_updown.Increment = 0.01
self.m_numeric_updown.MaxValue = 10.0
self.m_numeric_updown.MinValue = 1.0
self.m_numeric_updown.Value = 5.0
15.密码框
使用forms.PasswordBox()以输入密码或敏感数据,文本将被遮罩, 该.MaxLength属性是可选的:
self.m_password = forms.PasswordBox()
self.m_password.MaxLength = 7
16.进度条
使用 forms.ProgressBar 来显示长时间任务的进度, 第一步是创建具有最小值和最大值的forms.ProgressBar:
self.m_progressbar = forms.ProgressBar()
self.m_progressbar.MinValue = 0
self.m_progressbar.MaxValue = 10
可以通过控件上的 .Value 属性来设置控件,如下例最后一行所示:
17.单选按钮列表
创建一系列单选按钮,允许从列表中选择一个选项, 创建 forms.RadioButtonList()控件很简单。 然后用一个 .DataStore填充列表:
self.m_radiobuttonlist = forms.RadioButtonList()
self.m_radiobuttonlist.DataStore = ['first pick', 'second pick', 'third pick']
self.m_radiobuttonlist.Orientation = forms.Orientation.Vertical
self.m_radiobuttonlist.SelectedIndex = 1
列表的.Orientation可以设置为
forms.Orientation.Vertical或
forms.Orientation.Horizontal。这是一个可选的属性。
设置.SelectedIndex列表中初始默认选择的对象。
18.富文本区域
多行文本区域,支持富文本格式, 这与TextBox不同,因为它是用于多行文本输入,并且可以接受Tab和输入。文本可以通过使用按键进行格式化。虽然这些按键在不同的平台上可能会有所不同,但此控件的修改按键列表可以在Microsoft MSDN 编辑命令文档找到。
self.m_richtextarea = forms.RichTextArea()
self.m_richtextarea.Size = drawing.Size(400, 400)
19.滑块
水平或垂直滑块,用于从范围内选择一个值, 滑块由控制、最大值和最小值组成。初始.Value 也可以在对话框创建时设置:
self.m_slider = forms.Slider()
self.m_slider.MaxValue = 10
self.m_slider.MinValue = 0
self.m_slider.Value = 3
要将滑块设置为垂直方向,请添加以下行:
self.m_slider.Orientation = forms.Orientation.Vertical
20.旋转器
用于在紧凑空间中显示不确定进度的旋转器,当创建forms.Spinner()时,将.Enabled设置为True将激活旋转动作.
self.m_spinner = forms.Spinner()
self.m_spinner.Enabled = True
21.文本区域
多行文本控件带滚动条, 一个简化的版本 forms.RichTextArea()。 forms.TextArea() 控制器只需要几行代码:
self.m_textarea = forms.TextArea()
self.m_textarea.Size = drawing.Size(400, 400)
22.文本框
TextBox 用于在对话框中输入字符串. 要检查脚本中文本框的内容,文本框控件必须有一个名称来引用它。
self.m_textbox = forms.TextBox()
在这种情况下,名称m_textbox可以在第44行开始的类方法中引用该控件:
def GetText(self):
return self.m_textbox.Text
只是创建一个新的Eto.Forms.TextBox()很常见。TextBox还有许多额外的属性可以用来控制输入。这些属性包括MaxLength、PlaceholderText、InsertMode以及许多可以在Eto TextBox 类中看到的。
23.树形网格视图
带有附加属性列的树视图
TreeGridView 将 Eto 中最复杂的两个控件 TreeView 和 GridView 结合在一起,形成一个控件。这使得控件非常强大,但也需要非常特定的语法才能正常工作。前两行是标准的,创建 forms.TreeGridView() 并设置其大小:
该forms.TreeView()控制需要一些非常特定的语法。一般的TreeView容器足够简单。设置对象然后设置其大小。如果要编辑树中的项目,则.LabelEdit属性可以设置为True.
self.m_treegridview = forms.TreeGridView()
self.m_treegridview.Size = drawing.Size(200, 200)
column1 = forms.GridColumn()
column1.HeaderText = 'Tree'
column1.Editable = True
column1.DataCell = forms.TextBoxCell(0)
self.m_treegridview.Columns.Add(column1)
column2 = forms.GridColumn()
column2.HeaderText = 'Prop 2'
column2.Editable = True
column2.DataCell = forms.TextBoxCell(1)
self.m_treegridview.Columns.Add(column2)
column3 = forms.GridColumn()
column3.HeaderText = 'Prop 3'
column3.Editable = True
column3.DataCell = forms.TextBoxCell(2)
self.m_treegridview.Columns.Add(column3)
treecollection = forms.TreeGridItemCollection()
item1 = forms.TreeGridItem(Values=('node1', 'node1b', 'node1c'))
item1.Expanded = True
item1.Children.Add(forms.TreeGridItem(Values=('node2', 'node2b', 'node2c')))
item1.Children.Add(forms.TreeGridItem(Values=('node3', 'node3b', 'node3c')))
treecollection.Add(item1)
item2 = forms.TreeGridItem(Values=('node11', 'node11b', 'node11c'))
treecollection.Add(item2)
self.m_treegridview.DataStore = treecollection
在设置控件中显示的列后forms.TreeGridView() 需要将这些列创建为form.GridColumn(). .DataCell 属性指向forms.TextBoxCell(index) 存在于.DataStore 在本脚本的最后一行分配的。
树的信息存储在一个forms.TreeGridCollection()中。树中的项目是一个forms.TreeGridItems,它包含.Values的元组。每个元组将填充forms.TreeGridView()中的一行。
该forms.TreeGridView不会自动更新其内容。在完成所有控制设置后,DataStore被设置为treecollection。这样做可能会导致一个不显示数据的控制。
猜你喜欢
- 2025-07-06 JDK高版本特性总结与ZGC实践(jdk高版本会覆盖低版本吗)
- 2025-07-06 用好图形化批处理操作,让办公更高效
- 2025-07-06 电脑怎么压缩图片?怎么压缩图片大小?压缩图片大小的6种方法
- 2025-07-06 入门Python GUI编程:创建你的第一个窗口
- 2025-07-06 苹果app怎么上架(如何上架苹果应用商店)
- 2025-07-06 初探谷歌安卓15新版桌面模式:可在平板上运行,自由调整窗口大小
- 2025-07-06 VBA技术资料MF189:字典嵌套与下拉菜单
- 2025-07-06 BlazorUI 组件库——反馈与弹层 (1)
- 2025-07-06 实用的 jQuery下拉选择框插件集合
- 2025-07-06 用1100天做一款通用的管理后台框架
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 526℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 492℃MySQL service启动脚本浅析(r12笔记第59天)
- 472℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 469℃启用MySQL查询缓存(mysql8.0查询缓存)
- 449℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 429℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 426℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)