草庐IT

WinForms

全部标签

.net - 使用 Winforms 绘图

我想获得一些WinForm图形知识,所以我将我的小型2D编辑器从XNA重写为WinForm图形。现在,我为tileset自己创建了一个新的UserControl,但正如我所见,Paint方法仅在控件初始化时调用。因为我想永久重绘我的控件(或者至少通过MouseOver事件来节省一点性能),我听说Invalidate()方法让控件重绘自己,但这方式性能太差了。有什么方法可以让我的UserControl通过代码绘制自己,而不会出现这些性能问题? 最佳答案 Paint方法不仅在控件初始化时调用。每次需要重新绘制控件时都会调用它。当然,这是

c - 将文本附加到编辑控件? (Windows API)

我用C语言创建了一个简单的窗体,并向其中添加了一些控件。但是对于编辑控件,我无法向其添加文本,就像列表框控件一样。我所能做的就是从编辑控件中获取文本,向其中添加所需的行,然后再次设置文本。这是我为完成这项工作而编写的代码。voidAddText(HWNDEditControl,char*NewData){intTextLen=GetWindowTextLength(EditControl);char*Result=malloc(TextLen+strlen(NewData)+1);if(Result==NULL)return;GetWindowText(EditControl,Resu

c# - 如何覆盖 Winforms 控件的绘制方法以使其绘制到纹理?

我正在尝试将Winforms与SharpDX项目集成,以便在我的3D应用程序中使用Winforms(并最终通过HostElement使用WPF)。我需要创建或配置一个控件或表单,以便我可以:一个。将其渲染为纹理(我可以将其显示为Sprite*)b.过滤其输入以在控件未激活时删除鼠标/键盘事件。我已经尝试子类化Control和Form,以覆盖OnPaint和OnPaintBackground,但这些对子控件没有影响-或者就此而言,表单边框(即使他们这样做了,它们本身也不够,就像我一样)仍然留下一个白色方block,我认为已经绘制了“父级”)。如何停止在屏幕上绘制控件或表单,而只绘制位图?

c# - Visual Studio 部署包更改文件权限

也许由于安全隐患,这是不可能的......我有一个在VisualStudio中为WinForm创建的部署包。该应用程序在本地引用app.config文件,并允许用户通过该应用程序更改其中的设置。当我部署应用程序并尝试保存我所做的更改时,Windows提示“权限被拒绝”。有没有我可以作为安装的一部分运行的命令,它将为我的app.config文件授予“所有人”安全权限....从而允许我的应用程序对其进行编辑?谢谢。 最佳答案 如果您希望能够写入app.config文件,您需要将其移动到共享应用程序数据目录并修改您的应用程序以从那里读取配

c# - 从程序集中提取文字字符串

不太确定去哪里问这个。基本上,我负责我们产品的本地化。我需要一种方法来从已编译的程序集中提取所有文字字符串。我需要获取行号和源文件(用于比较)。我一直在使用FxCop,我刚刚创建了一个规则来吐出所有“ldstr”指令。但是,这依赖于过时的FxCop(我相信)。我也考虑过使用ildasm,但我找不到任何关于如何解析输出以可靠地检索我需要的信息的教程。那么,是否有实用程序来处理这个问题?我没有想到的简单方法?我也想避免像ReSharper这样的扩展,因为它只在解决方案的当前状态下运行;例如我无法生成用于比较的输出。 最佳答案 ildas

C# 不写入设置

所以我正在用C#编写一个程序,我需要将它保存到我在设置设计器中创建的自定义设置中。这是我所拥有的设置的屏幕截图,这是我写入设置的方式的几个示例。privatevoidtxtUsername_TextChanged(objectsender,EventArgse){Properties.Settings.Default.username=txtUsername.Text;}privatevoidcbUpdate_CheckedChanged(objectsender,EventArgse){Properties.Settings.Default.autoCheck=cbUpdate.Ch

c# - c# 判断文件或目录是否有删除权限

在我的应用程序中,我试图从隐藏代码中删除文件,但它抛出了名为“访问被拒绝”的错误。谁能告诉我如何判断文件是否有删除权限。提前致谢 最佳答案 你可以只处理异常try{Directory.Delete(dirPath);}catch(UnauthorizedAccessExceptionex){//Accessdenied}如果您尝试在调用Directory.Delete之前找出答案,则极有可能存在竞争条件并且某些东西锁定了目录,这会导致您的程序抛出异常。如果不处理此异常,程序将处于不稳定状态。

c# - Windows 窗体屏幕保护程序预览窗口句柄

我已经构建了一个Windows窗体屏幕保护程序,但我似乎无法弄清楚为什么预览功能不起作用。用于预览的构造函数重载publicScreenSaverForm(IntPtrPreviewWndHandle){InitializeComponent();//setthepreviewwindowastheparentofthiswindowSetParent(this.Handle,PreviewWndHandle);//makethisachildwindow,sowhentheselectscreensaver//dialogcloses,thiswillalsocloseSetWind

c# - 如何为每台计算机生成唯一编号?

这个问题在这里已经有了答案:HowtouniquelyidentifycomputerusingC#?(5个答案)关闭6年前。我正在使用C#开发软件锁。我需要为每台计算机生成一个唯一编号。经过研究,我决定使用CPU编号和硬盘驱动器编号作为每台计算机的唯一编号。我的代码:privatestringUniqID(){////////////////CpuIDstringcpuInfo=string.Empty;ManagementClassmc=newManagementClass("win32_processor");ManagementObjectCollectionmoc=mc.Ge

c# - 如何避免序列化 float 组属性

我为CustomDashPattern使用了一个float组属性,并像下面的代码一样使用它,float[]customDashPattern={5,3,5,3};publicfloat[]CustomDashPattern{get{returncustomDashPattern;}set{customDashPattern=value;}}publicboolShouldSerializeCustomDashPattern(){returncustomDashPattern!=newfloat[]{5,3,5,3};}但即使未更改其默认值,属性值仍会在设计器中序列化。即使模式是默认值,