草庐IT

Winforms

全部标签

c# - 如何确定用户控件何时完全加载并显示?

stackoverflow上已经有几个类似的问题了,但是我还没找到答案我有一个包含多个标签页的应用程序。在其中一个上,我一次加载了几十个用户控件的列表。目前我正在Load事件中执行此操作,因此在加载此页面之前我有一个小延迟。我想做的是让UI更具响应性,并在页面完全加载后填充列表。有什么方法可以跟踪用户控件何时完全加载其内容?VisibleChanged也无济于事,因为它在显示任何其他子控件之前触发。当我开始加载控件列表时某些子控件仍然不可见时,这会导致一些难看的视觉效果。编辑为了更清楚。我在页面容器上有一些子控件,我有一个自定义控件列表,我稍后会尝试加载。下面几个答案中描述的两种方法的

c# - Listbox 手动 DrawItem 大字体

我正在尝试绘制以红色*字符结尾的项目(并删除该*字符)并以黑色绘制其他项目。这是我的代码:privatevoidlistBox1_DrawItem(objectsender,DrawItemEventArgse){e.DrawBackground();//Drawourregularbackgroundif(Microsoft.VisualBasic.Strings.Right(listBox1.Items[e.Index].ToString(),1)=="*"){e.Graphics.DrawString(Microsoft.VisualBasic.Strings.Mid(listB

c# - 以像素为单位获取字体指标

我有一个WinForms用户控件,我正在尝试获取当前字体的准确水平字符间距,该字符间距应该是等宽的。看起来字体的Size属性提供了此信息,但显然是以点为单位,而我正在以像素为单位。varfontWidth=this.Font.Size;//Returnsem-sizeinpoints--notpixels如果我自己创建字体,我可以指定它使用像素单位。但在我的例子中,字体是通过我的用户控件的属性设置的,我无法确定字体是如何创建的。不幸的是,字体的Unit属性是只读的。如何使现有字体以像素为单位返回指标? 最佳答案 请参阅MSDN上的这

c# - 为什么跨线程以这种方式工作?

已解决看来Oliver是对的。经过几次尝试,我得到了异常,并且在Debug模式下我肯定得到了它。所以这一切都与时间有关。您还应该查看Matthewwattsons的回答;)例子首先,一个小例子可以解释我的困惑。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Threading;n

C# Winforms 设计器无法打开,因为它无法在同一程序集中找到类型

我收到以下错误Couldnotfindtype'My.Special.UserControl'.Pleasemakesurethattheassemblythatcontainsthistypeisreferenced.Ifthistypeisapartofyourdevelopmentproject,makesurethattheprojecthasbeensuccessfullybuiltusingsettingsforyourcurrentplatformorAnyCPU.但是没有任何意义的是My.Special.UserControl与窗体在同一个程序集中。更重要的是,如果我查

c# - 使用 Control+Plus 的快捷方式创建 MenuItem – 使用反射修改 MenuItem 的私有(private)字段是最好的方法吗?

我正在使用旧版MainMenucontrol(withMenuItems)controlinanapplication,andwouldliketoimplementzoominandzoomoutmenuitems(withControl++和Control+-键盘快捷键)。(请注意,我使用的是MainMenu而不是MenuStrip)。MenuItem确实有一个Shortcut属性,类型Shortcut,但它没有CtrlPlus选项。我决定看看如何Shortcutwasimplementedinthereferencesource,看起来每个枚举值只是几个Keys的组合枚举值(例如

c# - DPI 意识 - 在一个版本中没有意识到,在另一个版本中有系统意识

这个问题在这里已经有了答案:WindowsFormswindowchangesitssizewhenIcreateaWPFwindow(3个答案)关闭4年前。所以我们遇到了这个非常奇怪的问题。我们的应用程序是C#/WinForms应用程序。在我们的6.0版本中,我们的应用程序不支持DPI。在我们的6.1版本中,它突然变得支持DPI。在6.0版本中,如果您以高DPI运行它,它会使用Windows位图缩放,这很好,因为这不会影响屏幕布局。在6.1版本中,由于某种原因它变得可识别DPI,因此用户界面变得困惑。我们现在无法解决此问题。我们有数百个屏幕,因此让它们在DPI感知模式下正常工作需要花

c# - FileSystemWatcher Dispose 调用挂起

我们刚刚开始遇到FileSystemWatcher的一个奇怪问题,其中对Dispose()的调用似乎挂起。这段代码已经运行了一段时间没有任何问题,但我们刚刚升级到.NET3.5SP1,所以我想看看是否有其他人看到过这种行为。下面是创建FileSystemWatcher的代码:if(this.fileWatcher==null){this.fileWatcher=newFileSystemWatcher();}this.fileWatcher.BeginInit();this.fileWatcher.IncludeSubdirectories=true;this.fileWatcher.

c# - 用户安装和运行基于 .NET 3.5 的 ClickOnce 应用程序所需的最低权限是什么?

谷歌搜索揭示了许多技术细节和框架/操作系统先决条件,但似乎很难找到列出安装和运行ClickOnce应用程序所需权限的来源。这对于向在大型企业网络中工作的客户交付软件特别有趣,这些网络具有许多安全限制和集中策略来定义安装的版本等。这些网络中的“标准”用户在技术上仍然受到很大限制他们可以做什么,不可以做什么(遗憾的是,这是另一个话题......)。用户从网络启动ClickOnce应用程序需要哪些权限?如果已经安装了.NETFramework3.5,会有区别吗?如果没有安装现有的.NETFramework或具有与上述相同权限的旧版本(例如1.1/2.0),它是否可以工作?更具体一点,如果尚未

c# - 最上面的表格,点击 "through"可能吗?

感谢您之前的回答,使我能够完成在鼠标坐标中显示大红叉的基本工具,以便更加明显。红色十字是透明形式的具有透明背景的图像。问题是您无法点击,因为它的最顶端和表单中心实际上位于鼠标xy。有什么方法可以使它可用,以便十字仍显示在光标上但“可点击”通过吗? 最佳答案 您可以使用SetWindowLong设置WS_EX_TRANSPARENT窗口样式:IfthelayeredwindowhastheWS_EX_TRANSPARENTextendedwindowstyle,theshapeofthelayeredwindowwillbeignor