关于winform:更新-WinForms-InitializeComponent-的现代代码生成

当你应用 Visual Studio 中的 WinForms Designer 来创立一个 WinForms 表单或用户控件时,它并没有像 XML 或 HTML 那样的非凡定义或文件格式来示意用户界面。从一开始,WinForms 应用的惟一格局就是程序代码。在 WinForms Visual Basic 我的项目中定义的表单或用户控件会被保留到 VB 代码中。在 C# 我的项目中,这就是 C# 代码。这些代码将被搁置在一个专用的 Designer 文件中,该文件位于理论表单代码文件前面,也蕴含管制 UI 的代码。 当你的表单或用户控件须要在 WinForms Designer 中再次关上时,该代码将被解释并依据后果对象图在 Designer 中从新创立表单/用户控件。这就是咱们把保留表单的过程称为 CodeDOM 序列化的起因。这里的 CodeDOM 指的是一种对象模型(Code Document object model,代码文档对象模型),它容许开发人员通过特定类型的对象来定义程序的各个方面或程序的一部分。 尽管 CodeDOM 很灵便,能够比拟容易地进行扩大,并且反对比 Visual Basic 或 C# 更多的语言,然而从现有的代码文件生成 CodeDOM 图是一件齐全不同的事件。尽管 CodeDOM 能够通过现有的编译器实现为特定的语言编写代码文件,但生成的代码格调依然是 .NET 框架刚开始时的格调,在许多状况下曾经不再合乎以后的编码标准。 在 WinForms 中,当你设计一个表单的时候,所有相干的内容都是在每个表单或用户控件的一个办法中生成的。这个办法(还有一些根底构造和初始化代码)叫做 InitializeComponent。 这个办法会被表单的构造函数无条件地调用。在 C# 中,这是非常明显的,你增加到我的项目中的新表单总是具备构造函数和所需的调用: public partial class Form1 : Form { public Form2() { InitializeComponent(); } }在 Visual Basic 中,如果你不显式地增加构造函数 Sub New,Visual Basic 编译器会在后盾主动插入对 InitializeComponent 的调用。但如果你在代码文件中增加了一个构造函数,编辑器也会在 VB 代码中插入对 InitializeComponent 的调用: ...

April 18, 2023 · 2 min · jiezi

关于winform:winform读取文件目录下的信息

winform读取文件目录下的信息private void button1_Click(object sender, System.EventArgs e) { //浏览文件夹 this.folderBrowserDialog1.ShowDialog(); if(this.folderBrowserDialog1.SelectedPath.Trim()!="") this.textBox1.Text=this.folderBrowserDialog1.SelectedPath.Trim();}private void button2_Click(object sender, System.EventArgs e) { //显示指定文件夹下的文件 if(this.textBox1.Text.Trim()=="") return; this.listBox1.Items.Clear(); string[] MyFiles=System.IO.Directory.GetFiles(this.textBox1.Text); this.listBox1.Items.AddRange(MyFiles); //foreach(string File in MyFiles) // this.listBox1.Items.Add(File);}

October 26, 2021 · 1 min · jiezi

关于winform:应用的工具栏太难看这个控件帮你提升应用颜值

点击获取工具>>Toolbar Form是XtraForm的扩大版本,容许您将bar items 间接增加到表单标题栏中。 下图阐明了一个示例Toolbar Form,在表单标题栏中带有不同类型的bar items(惯例按钮、编辑项、查看项和外观菜单)。 ToolbarForm是XtraForm类的后辈,并共享其所有性能。 将表单转换为工具栏表单要将规范或任何DevExpress form转换为工具栏表单,请调用智能标记菜单并抉择 "Convert to Toolbar Form" 选项。 暗藏表单题目能够显示没有题目的Toolbar Form(Form.Text属性),为此请禁用ShowText设置。 以下"Visual Studio Inspired UI Demo" DevExpress demo屏幕截图阐明了没有可见题目的Toolbar Form。 在设计时将Bar Items增加到Form Title Bar中能够应用向床柜工具栏增加bar items的办法来填充Toolbar Form的标题栏:表单在其标题栏的两端都有两个能够包容我的项目的区域,单击 "[Add]" 按钮创立一个新的我的项目。 您能够在设计时拖放我的项目来重新排列它们,而后从一个标题栏区域挪动到另一个标题栏区域。 在Code. Satellite控件中创立Toolbar FormsToolbar Form具备两个必须的从属控件 - ToolbarFormControl和ToolbarFormManager。 ToolbarFormControl - 表单的标题栏,显示增加到其ToolbarFormControl.TitleItemLinks汇合的条形我的项目,应用BarItem.Alignment属性抉择此我的项目停靠在ToolbarFormControl的左边缘还是右边缘。ToolbarFormManager - 表单的外部BarManager,在ToolbarFormControl中显示的集体工具栏我的项目。要将现有表单转换为Toolbar Forms或在代码中创立新的工具栏表单,您须要手动创立这些组件。 C# `ToolbarForm myForm = new ToolbarForm();myForm.Size = new Size(800, 600);myForm.Text = "Toolbar Form";ToolbarFormManager tfcManager = new ToolbarFormManager() { Form = myForm };ToolbarFormControl tfcHeader = new ToolbarFormControl() { ToolbarForm = myForm, Manager = tfcManager};myForm.Controls.Add(tfcHeader);myForm.ToolbarFormControl = tfcHeader; ...

January 7, 2021 · 2 min · jiezi

关于winform:如何将WinFormsWPF项目转换为NET-Core

Telerik UI for WinForms和WPF套件通过Visual Studio扩大提供了.NET Core Project Converter,此工具能够将应用.NET Framework 4.8(或更低版本)的客户端我的项目转换为.NET Core我的项目,以简化迁徙。 telerik技术团队领有近20年的.NET Framework开发教训,生成并正在创立大量的桌面应该程序。.NET Core的诞生带来了一个新时代,即便某些开发人员可能抉择持续应用.NET Framework进行进一步开发,但其余开发人员仍偏向于新趋势。 那么所有针对.NET Framework的现有Telerik WinForms / WPF我的项目都将如何解决? 是否能够将它们转换为.NET Core?在咱们次要的桌面产品中,Telerik UI for WinForms和Telerik UI for WPF始终致力于为客户解决各种问题,同时也能够将现有我的项目转化为.NET Core。 自R2 2020版本起,这两个套件都通过Telerik WinForms和WPF Visual Studio Extensions在Visual Studio 2019中提供了工具,这些工具会将应用.NET Framework 4.8(或更低版本)的客户端我的项目转换为.NET Core我的项目,以简化迁徙。 仅当解决方案在VS2019中加载并且蕴含任何.NET Framework Telerik我的项目时,菜单项才可见。 .NET Core Project Converter是基于Try-Convert工具和Microsoft提供的.NET可移植性分析器,以帮忙.NET开发人员将其我的项目移植到.NET Core。 请记住,即便转换可能胜利,咱们也不保障我的项目将被编译或失常运行,并且您可能须要微调输入。 .NET Core Project Converter Wizard容许您将Telerik .NET Framework我的项目转换为Telerik .NET Core我的项目,第一步是显示正告页面,以告知用户运行向导后将进行哪些更新和哪些内容不会更新。 Converter向导列出了所有检测到的.NET Framework我的项目,并在下拉列表中列出了所有可用的.NET Core 3.1发行版: ...

December 22, 2020 · 1 min · jiezi

关于winform:WinForm界面开发轻松实现菜单列表的动态个性化配置管理

点击获取工具>>在咱们个别的利用零碎外面,因为零碎是面向不同类型的用户,咱们所看到的菜单会越来越多,多一点的甚至上百个,然而咱们理论工作接触的菜单可能就是那么几个,那么对于这种宏大的菜单体系,寻找起来十分不便。因而对菜单的个性化配置就显得尤为重要,本文就是基于这样的理念,提供用户对可见菜单进行一个动静配置,只选本人喜爱、罕用的菜单显示进去即可,菜单的配置存储在数据库外面,在不同的客户端体验都是一样。本文次要介绍实现这样的性能的一个残缺思路,局部代码逻辑可供参考。 一、 菜单列表的动静个性化配置的过程在咱们有些软件外面,咱们可能在界面上顶部搁置菜单,也可能在界面的左侧搁置树形列表菜单,这种状况都有可能,本篇摘取其中之一,左侧菜单进行一个介绍菜单的配置解决。 例如咱们在左侧依据用户权限展现相干的菜单信息,动静生成整个列表展现,大抵的界面成果如下所示。 而后在性能列表上提供一个右键的菜单进行菜单的刷新、配置管理,如下界面所示。 通过配置性能,咱们让用户进入一个配置管理界面,在其中配置显示本人感兴趣的菜单,而后进行保留即可,保留后同时刷新界面的性能菜单显示。 以上几个界面成果就是为了介绍整个菜单配置管理的个别过程,之所以把界面成果放在后面介绍,就是可能让咱们有一个相似原型设计形式的感性认识,理解了相干的处理过程,咱们就能够着手通过编码的形式来实现这个解决逻辑了。 二、菜单动静个性化配置的性能实现下面介绍了大略的界面成果,有了参考,咱们能够把它的实现思路通过代码实现进去。 1. 参数的数据存储 首先咱们须要理解,用户配置能够通过XML保留在本地,也能够通过数据库存储保留在服务器,后者在分布式的客户端的时候,能够处处一样,这样就不会造成体验上的差别,因而咱们这里采纳存储在数据库的计划。 这个配置管理组件SettingsProvider.net应用起来也是比拟不便的,能够抉择存储在本地的对象,也能够抉择存储在数据库的存储对象。 首先咱们先定义一个存储的参数类,这个是应用这个组件所必须的存储对象信息,如下代码所示。 `/// <summary>/// 用来管制人员治理显示菜单的参数配置/// </summary>public class UserMenuParameter{[DefaultValue("")][Description("用户ID")]public string UserID { get; set; } [Description("用户设置可见的菜单")]public Dictionary<string, bool> VisibleDict { get; set; }}` 须要获取或存储这个对象信息的时候,咱们初始化几个治理类,如下代码所示。 `//参数存储所需的相干对象private SettingsProvider settings;private ISettingsStorage store;private UserMenuParameter parameter;` 而后在配置管理界面窗体外面,初始化这几个对象,如下代码所示。 `// PortableStorage: 在运行程序目录创立一个setting的文件记录参数数据// DatabaseStorage:在数据库TB_UserParameter表存储用户配置参数store = new DatabaseStorage(LoginUserInfo.ID);settings = new SettingsProvider(store);parameter = settings.GetSettings<UserMenuParameter>();` 这样咱们就能够依据用户的ID,获取对应记录的信息并转换为相干的对象了,如果咱们须要把批改的信息写会到存储介质外面,代码如下所示。 `try{parameter = settings.GetSettings<UserMenuParameter>();parameter.VisibleDict = dict;parameter.UserID = LoginUserInfo.ID;settings.SaveSettings<UserMenuParameter>(parameter); ProcessDataSaved(sender, e);//触发内部事件 ...

December 7, 2020 · 1 min · jiezi

关于winform:NEWWinForm界面开发设计时正式支持NET-5

点击获取工具>> 早在往年7月,官网技术团队发表对DevExpress控件进行性能加强,使其反对最新的.NET 5 Preview。 然而只管技术团队始终在致力确保WinForms控件与.NET 5兼容但在Visual Studio中对设计器的反对却是另一回事。 当初.NET 5已与Visual Studio 2019 v16.8一起正式公布,当初该探讨如何应用DevExpress WinForms v20.2的设计时工具了。 只管WinForms平台尚未齐全解决重要的设计时问题,但Microsoft在思考.NET 5的开发人员方面获得了较好的停顿,例如,您能够调用控件的智能标记菜单... 应用控件的设计器 并利用独立的设计器对话框来设置简单的属性,例如技术团队最近全面批改的编辑器输出标记的Mask Settings对话框。 基本操作为了开发一个新的WinForms应用程序,该应用程序以DevExpress控件为指标面向.NET 5,您应该执行以下操作: 应用VS Installer中选中的“.NET Core development tools”选项来装置Visual Studio 2019 version 16.9 Preview 1。依照本帮忙文章中的阐明注册非凡的领先体验NuGet feed:装置Visual Studio的NuGet Package Manager。通过独自的Feed散发.NET 5控件,Microsoft仍必须施行一些细节,这些细节对于残缺设计时反对至关重要。留神:目前,NuGet feed是获取针对.NET 5优化的最新DevExpress WinForms控件的惟一办法。通过Download Manager中提供的经典.NET Core安装程序散发的DevExpress WinForms v20.2控件,也能够在.NET Core下运行.NET 5,但不足设计时反对。 在Visual Studio中,确保您的应用程序面向.NET 5.0。跳转到“Project | Manage NuGet Packages...”,抉择您在步骤2中注册的Feed,而后装置具备所需本地化区域性的预公布软件包,每个软件包都蕴含所有可用的DevExpress WinForms控件。 装置选定的程序包后,您能够从Visual Studio工具箱中增加DevExpress控件。 已知问题只管下面提到的设计时性能仿佛表明.NET 5已准备就绪且可用(实际上可用于Visual Studio中的根本WinForms控件),但规范WinForms设计器界面依然存在重要的局限性/问题,这些问题意味着设计器目前尚不齐全反对咱们简单的WinForms控件。当然,Microsoft将在将来的Visual Studio构建中加强这些接口,随后将提供DevExpress WinForms设计时反对。 目前,咱们尚无无关何时筹备好进行此类更改的领导,因而咱们无奈为用户提供确切的公布时间表。一些尚未为.NET 5提供最佳的设计时体验示例: ...

December 4, 2020 · 1 min · jiezi

关于winform:WinForm应用界面开发框架下的布局调整操作简单实用

点击获取工具>>在本文中,咱们形容LayoutControl如何调整其子控件的大小,一旦相熟了次要概念,就应该可能使其适应您的计划。 概念:LayoutControl调整我的项目的大小,以便思考到这些我的项目及其子项的大小限度,它们会填充所有可用区域。若要限度某些控件的大小并在此大小大于可用的可见区域时显示滚动条,请指定 Control.MinimumSize属性。 若要限度我的项目的最大大小并容许LayoutControl自在调整其余我的项目的大小,能够指定Control.MaximumSize并增加Empty Space Items ,以便它们占据调整大小后残余的空白区域。 要自在调整控件的大小,您能够删除Size Constraints并增加Empty Space Items,以便它们填充空白区域。 请留神以下几点: 某些DevExpress编辑器和控件(如TextEdit,SimpleButton等)和某些规范WinForms控件无奈通过设计自在调整大小。如果Control.MinimumSize / Control.MaximumSize属性的宽度和/或高度设置为0,则能够自在调整控件的大小。应用v20.2设计时和运行时自定义表格会主动突出显示已达到其最小/最大大小(因而无奈进一步调整大小)的我的项目。 在设计时,当聚焦控件或LayoutControl时,将显示尺寸图标,这些图标批示对控件施加了哪些尺寸限度。 示例:暗藏LayoutControl中的滚动条 利用大小限度时,LayoutControl将显示滚动条,因而请确保: 未设置Control.MinimumSize 属性。相应我的项目的 LayoutControlItem.SizeConstraintsType 属性未设置为Custom,也未指定其 LayoutControlItem.MinSize。控件的大小不能在设计时设置 确保我的项目没有因为尺寸限度而被锁定。因为布局控件会调整其我的项目的大小,以便它们能够占据所有可用区域,因而要调整我的项目的大小,有必要将Empty Space Items增加到指标布局我的项目的相应一侧。 调整组或标签组的大小 在指标组外部和/或内部的相应一侧增加一个Empty Space Item来调整其大小。 调整我的项目题目的大小 您能够将TextAlignMode设置为以下任一值: AutoSize使LayoutControl将我的项目题目的大小调整为最小宽度,以使文本整体显示。CustomSize而后将TextSize属性设置为所须要的大小值。更改控件与其题目之间的间隔 您能够应用TextToControlDistance属性来治理间隔。 当CheckEdit.Text蕴含长文本时,避免应用CheckEdit减少LayoutItem的大小 将控件增加到LayoutControl时,将创立一个具备Default Size Constraints的新布局我的项目。更改LayoutControl中CheckEdit的文本时,将更新LayoutControlItem.MinSize和MaxSize属性来限度我的项目的可能大小。为防止这种状况,请将CheckEdit增加到LayoutControl,并将CheckEdit LayoutItem的大小束缚设置为FreeSizing,而后批改CheckEdit的文本。

October 19, 2020 · 1 min · jiezi