Tag: winforms

Winforms:如何加速Invalidate()?

我正在GDI +中开发一个保留模式绘图应用程序。 应用程序可以将简单的形状绘制到canvas并执行基本编辑。 执行此操作的数学运算优化到最后一个字节,不是问题。 我正在使用内置Controlstyles.DoubleBuffer的面板上绘图。 现在,如果我在大显示器上运行我的应用程序(在我的情况下为HD),我的问题就出现了。 如果我尝试从(大)canvas的一角绘制一条线到对角线的另一角,它将开始滞后并且CPU变高。 我的应用中的每个图形对象都有一个边界框。 因此,当我使从最大化应用程序的一个角落到对面角落的行的边界框无效时,该边界框几乎与canvas一样大。 当用户绘制一条线时,这个边界框的失效因此发生在mousemove事件上,并且有明显的滞后可见。 如果线是canvas上的唯一对象,则也存在此延迟。 我试图在很多方面优化它。 如果我画一条较短的线,CPU和滞后就会下降。 如果我删除Invalidate()并保留所有其他代码,该应用程序很快。 如果我使用Region(仅跨越图形)来使invalidate而不是boundingbox失效,那就慢了。 如果我将边界框拆分成一系列背靠背的小方框,从而减少了无效区域,则无法看到可见的性能增益。 因此,我在这里不知所措。 如何加快失效? 另外,Paint.Net和Mspaint都有同样的缺点。 但是,Word和PowerPoint似乎能够如上所述绘制一条线,没有延迟,也没有CPU负载。 因此有可能达到预期的效果,问题是如何?

为我的所有表单设置相同的图标

有没有办法在不必逐个更改的情况下为我的所有表单设置相同的图标? 类似于为解决方案中的所有项目设置GlobalAssemblyInfo时的情况。

在DataGridView中确定单元格位置

给定特定的行号和列索引,如何计算DataGridView中的单元格位置(IE:Location.Point)? 我需要单元格位置的原因是我可以在单元格内放置一个按钮以允许文件夹浏览(datagridview显示文件夹路径)。 关于如何实现这种欢迎的替代建议。

确定ListView中的单击列

我需要在C#中的ListView中单击列 我有一些示例代码来自如何确定Listview中的单击列索引,但我不确定如何实现它。

修复通用UserControl的嵌入资源

在重构期间,我向MyControl添加了一个generics类型参数, MyControl是一个派生自UserControl的类。 所以我的class级现在是MyControl 。 现在我在运行时收到一条错误,指出无法找到嵌入式资源文件MyControl`1.resources 。 使用.NET Reflector快速查看显示资源文件实际上名为MyControl.resources ,没有`1 。 在MyControl.InitializeComponent方法的开头,有一行可能是导致问题的那一行: System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager( typeof(MyControl)); 如何强制ComponentResourceManager使用嵌入式资源文件MyControl.resources ? 其他解决此问题的方法也是受欢迎的。

单击menustrip时,禁用“要求”以双击未聚焦的窗口

很抱歉这个奇怪的标题,我正在玩WinForms,我想知道是否有任何方法可以让你不必“双击”窗口激活menustrip中的项目窗户没聚焦? 目前,如果窗口未聚焦,我首先必须单击窗口以使其聚焦,然后再次单击menustrip项目,即使我的鼠标从一开始就hover在menustrip项目上方。 提前致谢!

当treeview没有焦点时,C#WinForms突出显示treenode

Gretings。 我正在创建一个界面来编辑游戏场景。 基本上它由具有嵌套条件和动作的事件组成。 因此,我计划使用两个树视图 – 一个用于选择事件,另一个用于选择要编辑的事件内的条件/操作。 现在,您看,如果我选择一个事件(在左侧树视图中),然后尝试在右侧树视图中选择一些内容,则左侧树视图将停止显示蓝色选择矩形。 这显然是不好的,因为现在用户不知道他正在编辑哪个事件! 我发现保留某些关于当前选择的信息的唯一方法是使用SelectedImageIndex,但这只是一个不同的小图像。 有没有其他方法可以突出显示treenode,而没有关注树视图? 我知道我可以只使用Graphics.DrawRectangle或者其他东西,但是我听说绘图应该在Paint事件中完成而treeview没有绘制事件…所以我想如果我在失去焦点的情况下绘制它,然后拖动窗体屏幕外的东西,它会被“删除”? 无论如何,请告诉我你是否有想法(除了使用一个单独的图标选择和未选择treenode) 谢谢!

表格可以判断是否有任何模态窗口打开?

如何,在我的WinForm应用程序的主要forms内,我可以判断是否有任何模态窗口/对话框打开属于主窗体?

以编程方式触发控件的事件

假设我有一个WinFoms项目。 只有一个按钮(例如button1 )。 问题是:是否可以通过代码触发ButtonClicked事件而无需单击它?

如何在绑定到链接到EF4实体的绑定源时对DataGridView进行排序

我有一个链接到BindingSource的DataGridView 。 我的BindingSource链接到一个IQueryable实体列表: public void BindTo(IQueryable elements) { BindingSource source = new BindingSource(); source.DataSource = elements; bindingNavigator1.BindingSource = source; dataGridView1.DataSource = source; } 我希望我的用户能够点击网格标题来对数据进行排序 – 努力使其发挥作用。 可能吗? 如果是这样,我该怎么办?