草庐IT

WinForms

全部标签

c# - 将大型 C# winforms 应用程序升级到 WPF 的最简单方法是什么

我处理一个大型C#应用程序(大约450,000行代码),我们经常遇到桌面堆和GDI句柄泄漏问题。WPF解决了这些问题,但我不知道升级的最佳方式是什么(我预计这会花费很长时间)。该应用程序只有几种形式,但它们可以包含许多不同的用户控件集,这些控件是通过编程确定的。这是公司内部应用,因此我们的发布周期非常短(通常为3周的发布周期)。是否有一些渐进的升级路径,或者我们是否必须付出巨大的努力才能承受冲击? 最佳答案 您可以从创建WPF主机开始。然后您可以使用控件来承载您当前的应用程序。然后,我建议在WPF中创建一个新控件库。一次一个,您可以

c# - 覆盖 Winforms ComboBox 自动完成建议规则

我正在尝试修改Windows.FormsComboBox的行为,以便自动完成下拉列表根据我指定的规则显示项目。默认情况下,如果您在ComboBox中使用自动完成,则遵循的规则是“字符串s包含在下拉列表中if(s.StartsWith(userEnteredTextInTheComboBox))”我真正感兴趣的是替换一个新规则对于当前的,但我找不到办法解决它。(具体来说,我更喜欢s.Contains而不是s.StartsWith。)我可以使用两个控件而不是一个控件拼凑出一个笨拙的解决方案,但我真的更愿意使用一个真正按照我的意愿行事的解决方案。更新:我基本上找到了thesamequesti

c# - 这些关闭我的应用程序的方法有什么区别?

基本上我有一个主窗体,它在加载时打开一个子窗体以供用户登录。当他们取消或关闭此登录表单时,我需要关闭整个应用程序。但是关闭C#程序似乎有几种不同的方法:Application.Exit();Application.ExitThread();Environment.Exit(1);Process.GetCurrentProcess().Kill();SFTPClient.LDAPLoggedIn=false;关闭();编辑:抱歉,如果这个不清楚:它在Controller对象中设置一个属性以指示登录失败。打开子窗体后,我会检查父窗体中的这个属性,看程序是否应该继续。它基本上无一异常(exc

c# - 如何知道表单是否显示为对话框

是否已经有一些我可以使用的属性,例如:if(this.IsDialog){DialogResult=...;}else{//dosomethingelse}或者我应该创建这样的属性myself并在将表单显示为对话框之前将其设置为true吗? 最佳答案 您可以查看是否this.Modal是真的。 关于c#-如何知道表单是否显示为对话框,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/

c# - System.Windows.Forms.GroupBox 隐藏框架

在System.Windows.Forms.GroupBox上,有没有办法隐藏它周围的框架?我尝试更改FlatStyle,但这并没有达到我想要的效果。谢谢! 最佳答案 Panel可能是更好的选择,但如果您出于某种原因确实需要GroupBox,您可以修改代码here创建一个根本不绘制边框的子类。具体来说,您需要覆盖OnPaint方法。 关于c#-System.Windows.Forms.GroupBox隐藏框架,我们在StackOverflow上找到一个类似的问题:

c# - Winforms DataGridView 数据绑定(bind)到复杂类型/嵌套属性

我正在尝试将DataGridView数据绑定(bind)到包含具有以下结构的类的列表:MyClass.SubClass.Property当我单步执行代码时,从未请求SubClass。我没有收到任何错误,只是没有看到任何数据。请注意,我可以在具有相同层次结构的编辑表单中进行数据绑定(bind)。 最佳答案 LawofDemeter.在公开SubClass.Property的MyClass上创建一个属性。像这样:publicclassMyClass{privateSubClass_mySubClass;publicMyClass(Sub

c# - 配置字符串的 Winforms 连接属性对话框

有没有办法在运行时显示连接字符串浏览(数据库)的连接属性对话框?因为我希望用户能够使用GUI连接到各种数据库。与我们在visualstudio连接属性对话框中获得的相同。提前致谢 最佳答案 寻找this准确解释您要查找的内容的文章。她说的是以下内容:您需要为您的项目添加几个引用:OLEDB服务组件1.0类型库MicrosoftActiveX数据对象2.x库使用以下代码:usingMSDASC;usingADODB;privatestringBuildConnectionString(){stringstrConnString="";

c# - ASP.net 通过内容页访问母版页变量

我有一个母版页:然后我有一个公共(public)变量:publicpartialclassAdminMaster:System.Web.UI.MasterPage{protectedboolblnShowDialogue=false;在我的内容页面中,我想设置这个变量:blnShowDialogue=true;这样在我的母版页中我可以拥有代码:$(function(){$("#dialog").dialog();}这有意义吗?当我尝试Master.blnShowDialogue或blnShowDialogue=等的组合时,似乎没有任何效果。Thename'blnShowDialogue

c# - 如何以编程方式最小化打开的窗口文件夹

如何获取已打开文件夹的列表、枚举并以编程方式最小化每个文件夹?有时,当从应用程序中的一种形式跳转到另一种形式时,一些打开的文件夹确实会从工具中窃取焦点。防止这种情况是我们客户的重中之重。客户是视障人士,因此他们只能通过屏幕阅读器访问机器。最小化其他窗口(文件夹)根本不是问题,实际上是必需的。我试过这个:foreach(ProcesspinProcess.GetProcessesByName("explorer")){p.StartInfo.WindowStyle=ProcessWindowStyle.Minimized;}正如预期的那样,它并没有什么好处。更新:根据这里的答案,我试过这

c# - DataGridView 使用 SortableBindingList

我有一个返回IList的函数,它是DataGridView的数据源。我了解到DataGridView不会对IList进行排序。我读了ThisstackoverflowQ&A并正在尝试实现SortableBindingList。我一定是做错了什么,因为我的DataGridView是空的。我还尝试使用TextBox从SortableBindingSource访问一个元素,但什么也没有。usingMicrosoft.SqlServer.Management.Controls;publicpartialclassForm1:Form{IBusinessLayerbusinessLayer;IL