标题基本概括了所有内容.我做了一些谷歌搜索,但我能找到的唯一信息是至少一年,有些信息比Windows 7旧.所以我很好奇,使用WPF会有性能损失吗?
对于某些事情(例如数据绑定)来说,它比你在WinForms上一起攻击的速度更快吗?
这将是一个用.NET创建的项目,以防对任何人都很重要.
编辑
我正在看的这个项目有一个基本的UI风格,但是可能会显示很多信息(它查询文件/目录并在屏幕上显示它们).我还没有决定它是否会自动刷新屏幕,但我想它可能会.
可能会有相当多的控制,但任何人都不应该考虑"图形"密集.
从业务应用程序的角度来看,我正在关注性能.
我不打算使用第三方控件.
我有TableLayoutPanel用于动态创建AutoScroll = true的控件.添加新控件时,它工作正常.但是当我删除并且所有控件都可见时,可以看到垂直滚动.这里有一些截图:
预期/正确的滚动可见性:
可见性不正确:

有任何想法吗?
更新:这是一些代码
tableLayoutPanel1.SuspendLayout();
tableLayoutPanel1.RowCount = 0;
tableLayoutPanel1.RowStyles.Clear();
tableLayoutPanel1.AutoScroll = true;
tableLayoutPanel1.Padding = new Padding(0, 0, SystemInformation.VerticalScrollBarWidth, 0);
foreach (var item in objects)
{
tableLayoutPanel1.RowCount++;
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize));
tableLayoutPanel1.Controls.Add(CreateNewItem(item));
}
tableLayoutPanel1.RowCount++;
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize));
tableLayoutPanel1.Controls.Add(CreateAddButton());
tableLayoutPanel1.ResumeLayout();
Run Code Online (Sandbox Code Playgroud)
以及删除代码
tableLayoutPanel1.SuspendLayout();
tableLayoutPanel1.Controls.Remove(item);
tableLayoutPanel1.RowStyles.RemoveAt(0);
tableLayoutPanel1.RowCount--;
tableLayoutPanel1.ResumeLayout();
Run Code Online (Sandbox Code Playgroud)
AutoSize为true,AutoSizeMode为GrowAndShrink
c# scrollbar tablelayoutpanel vertical-scroll vertical-scrolling
我想创建一个ListBox允许用户编辑项目的控件,比如Launchy中的扩展名列表框.这在WinForms中可行吗?我尝试在该列表框中使用自动窗口信息,它显示为QWidget(可能与Qt相关).
我正在使用ms-access开发用于数据库管理的前端解决方案.我必须承认ms-access VBA是大规模应用程序开发的一个固定限制,这就是为什么我一直在转变使用c#而不是VBA的想法.
实际上,除了一个东西:表单之外,很容易摆脱ms-access中的所有内容.在数据显示和编辑方面,这些特别快速有效.在最新版本的ms-access中,表单就像类一样,因此您可以在运行时专门管理同一表单的一个或多个实例.在连续模式下使用时,它们可用于操作数据"excel方式",具有行和列显示,过滤和排序的可能性.简而言之,我喜欢它.
当然可以在c#(或其他类似语言)下对这个表单对象进行反向工程,但这可能已经完成了:你曾经使用过库,activeX控件或任何其他类型的附加组件吗?在c#中操作类似msacces的形式的可能性?
编辑:根据Renaud的评论,我承认没有兴趣仅转换表单的布局部分,并且无法转换其自定义/ VBA部分.在我们的特定情况下,我们很久以前就停止在表单中使用自定义VBA代码,并且从模块管理表单属性,方法和事件.这甚至在这里讨论过.
实际上,我们所有的表单都依赖于一个通用模板,并且是自动构建的"表单"和"控件"表.所有基础事件管理代码生成都是自动化的:根据其类型,控件与选定事件相关联,事件代码提供应用程序模块中保存的标准\通用程序.这使我认为可以将我们的'ms-access表单技术'转移到.NET平台.
我有一个用C#编写的win GUI应用程序,其中有一个TextBox我写日志的组件.在某些时候,它太过负载,整个应用程序开始动摇.我想建立一个有效的机制,使其成为一个FIFO,意思是 - 使其固定大小并自动删除最旧的内容.
这样做有什么.net/c#功能吗?否则,这样做的正确方法是什么?
更新:我还有其他类型的文本数据,而不仅仅是日志.因此,ListBox对我来说,这不是一个合适的解决方案.
我正在寻找一个选项,我可以使用组合框的功能和listview.
原因是因为我的SQL查询不能超过1个输出,在某些情况下我可以得到.
例如,我的SQL表看起来有点像这样
Unique_ID - Name
123456789 - Simon
987654321 - Simon
基本上相同的名称可以在数据库中多次,每个条目都有自己的ID.
为了用户的缘故,我不能让他们根据ID选择要编辑的记录,而是让他们根据名称选择记录.当我的查询产生超过1条记录时,我得到MySQL异常.
这是有问题的MySQL查询:
"SELECT worldspace from survivor where is_dead = '0' _ and survivor.unique_id = (select unique_id from profile where name = '" & target & "')"
然后,该查询的输出将用于另一个UPDATE查询.
那么,我的组合框是否有可能同时将ID和名称作为值,并且它们之间有明确的分离,因此整个值保持良好的可读性,就像在listview元素中一样?
我想让ListBox控件包含跨越多行的项目.
基本上我想要的是每个项目跨越多行并可作为一个项目选择.有没有办法做到这一点?
今天我的一个同事说GDI+和Windows Forms在windows 7下非常慢。他还提到GDI+不再由硬件加速。不幸的是我这里没有Win7机器,我从google得到的结果不是很清楚。所以我的问题是:Windows 7 下 GDI+ 慢吗?
谢谢你的帮助。