显示驱动导致 WinForm 窗体尺寸不对?

使用.NET开发了一个WinForm软件,VisualStudio中设置的软件窗体宽度固定为1000,发布后,一直运行正常,今天换了台机子,发现不正常了,尺寸明显变宽了,应该尺寸有1200左右了。有人说是显卡驱动的原因,但我们又不能随便去碰客户的电脑驱动,无法测试,从理论上来说,我猜测是由于显示器DPI不同造成的。关键是尺寸变了后,原来窗体的背景图片由于不够大出现了平铺现象,所以只好把BackgroundImageLayout属性值由Tile改成Stretch,拉伸图片,看起来将就正常了。...

霸道的 Lambda 事件处理程序表达式

传统的做法:publicForm1(){WebClientwc=newWebClient();wc.DownloadStringCompleted+=newDownloadStringCompletedEventHandler(wc_DownloadStringCompleted);}voidwc_DownloadStringCompleted(objectsender,DownloadStringCompletedEventArgse){thrownewNotImplementedException();}采用Lambda后:publicForm1(){WebClientwc=newWebClient();wc.DownloadStringCompleted+=(sender,ea)=>{};}是不是简单多了?而且VisualStudio会自动识别ea的类型。相关阅读C#3.0-Lambda...

如何避免 C# 桌面程序的子窗体产生标题栏?

//为主窗体任意设置MainMenuStrip,避免子窗体产生标题栏。this.MainMenuStrip=newMenuStrip();...

无法找到一个运行时版本来运行这个应用程序

这个是由于缺少对应版本的.NETFramework造成的,需要安装微软的.NETFramework,具体及下载地址请参见:Unabletofindaversionoftheruntimetorunthisapplication....

Visual Studio 调试时如何将 try 中的异常显示出来?

众所周知,try中的异常由catch代码来处理,但如果在调试阶段,可能觉得catch还不够细,需要VisualStudio截获并抛出异常,这样还方便些。解决办法菜单->调试->异常,将“引发”勾上。...

判断程序中 != "特定值" 写法到底好不好?

看下面的代码:if(a=="F1"){F1();}elseif(a=="F2"){F2();}else{F1();}上面的代码,也就是说,只要a不等于F2,就调用F1(),似乎可以简化成如下代码:if(a!="F2"){F1();}else{F2();}其实上面代码有两个问题:一是我们看到"F2",会习惯性认为这是=="F2",而不是!="F2",下面的调用代码应该是F2()。不要忽略习惯的力量,这往往会给我们维护代码带来麻烦。二是如果我还有个F3呢?不好扩展。那是不是下面的代码好些呢?if(a=="F2"){F2();}else{F1();}这种代码,我觉得可理解性要好些,但也有新问题,如果"F1"是命中机率最大的,那么执行else的可能性就越大,性能上要差一些,还有一个担心会让人忽略掉"F1"这个条件。其实,我个人觉得本文最上面的代码是最好的(在本文三段代码中比较),当然如果花括号中是一大段代码,而不是简单地调用F1()、F2(),这段代码就有劣势了,就得采用第三段代码,因为它是最好理解的。...

VC# 中 ListView 图片使用-显示图片

VC#中ListView图片使用-显示图片VC#中ListView图片使用-解决图片不能删除的问题在ListView中显示图片,需要使用ListView、ImageList两个控件。一、设置ListView的View属性比如LargeIcon。二、装载图片imageList1.Images.Clear();imageList1.ColorDepth=ColorDepth.Depth24Bit;imageList1.ImageSize=newSize(120,90);listView1.LargeImageList=imageList1;listView1.Items.Clear();for(inti=0;i<filePaths.Length;i++){imageList1.Images.Add(GetImage(filePaths[i]));listView1.Items.Add(filePaths[i]);listView1.Items[i].ImageIndex=i;}GetImage是一个自定义的方法,具体见下一节,它的作用是解决图片无法删除的问题。VC#中ListView...

同一 C# 桌面程序只运行一个

很多程序没有必要同时运行多个,比如下载程序,这就需要限制,如果程序已经运行,则再运行时给予提示并不再继续运行新的。这里给出一个网上流行的但不正确的,但又在这里被修正了的方法。对Program.csusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Windows.Forms;usingSystem.Threading;usingSystem.IO;namespaceCftea{staticclassProgram{publicstaticboolCreatedNew=false;publicstaticMutexAppMutex=newMutex(false,"Cftea_TestApp",outCreatedNew);///<summary>///应用程序的主入口点。///</summary>[STAThread]staticvoidMain(){if(!CreatedNew){MessageBox.Show("软件已经运行。","ITPOW",MessageBoxB...

VC# 在 WinForm 窗口中显示 Word、Excel 等文件

本文介绍的VC#在WinForm窗口中显示Word、Excel等文件,并不是用VC#通过Microsoft.Office.Interop.Word来进行的,而是通过一个微软的dsoframer的控件进行的。首先下载dsoframer,将其拖拽到VisualStudio的项目中。切换到Form设计界面,在工具箱中,右键,单击“选择项”。切换到“COM组件”,单击“浏览”添加好后,把控件拖到Form中,VisualStudio自动为您添加相应引用,接下来就是相应的使用了。打开文件axFramerControl1.Open("D:\cftea.doc",false,"","","");注意,初始的控件名称,不是我们想象的dsoFramer1,而是axFramerControl1,不过这个我们自己可以改。这样就打开一个Word文档了,实际上它是调用的Word程序,但它嵌入到了WinForm中。什么,不想要Word工具栏?简单,在设计界面选中控件,切换到属性,将其Titlebar、Menubar、Toolbars、等设置为False。要打印?好说。if(printDialog1.ShowDial...

Visual Studio 调试时遇到错误无法定位,直接退出程序了

VisualStudio中写好程序后,按F5调试,但执行中遇到错误,程序直接就退出了,什么提示都没有,VisualStudio显然没有捕获错误在哪里。这种情况往往比较麻烦,并不是VisualStudio的问题,我遇到过List对象没有实例化,使用时也出现这种情况。像这种情况可以使用MessageBox在特定的地方提示,或按F9中断,这样来逐步缩小错误可能出现的位置,再对那个区域重点排查。...

如何设置 ComboBox 下拉列表的高度或间距

ComboBox的下拉列表部分总是很挤,看起不舒服,但是设置了ItemHeight没用,怎么办呢?首先设置一个较大的ItemHeight值,比如20;然后设置ComboBox的DrawMode为OwnerDrawVariable;然后在DrawItem事件中实现如何代码:privatevoidComboBox1_DrawItem(objectsender,DrawItemEventArgse){if(e.Index<0){return;}e.DrawBackground();e.DrawFocusRectangle();e.Graphics.DrawString(ComboBox1.Items[e.Index].ToString(),e.Font,newSolidBrush(e.ForeColor),e.Bounds.X,e.Bounds.Y+3);}ItemHeight是设置项的高度,但只设置它没用,为什么呢?因为默认的DrawMode 决定了它不会有用,所以我们将DrawMode设置为OwnerDrawVariable;然后再自己写DrawItem事件处理程序,最后...

如何在多线程中解决 DataGridView 无法显示滚动条的问题

通过为DataGridView指定DataSource来填充数据,但是将其放在多线程中后,滚动条就消失了,还动不动就假死。解决办法需要两步一是使用Invoke将执行数据绑定的代码交回给主线程(因为DataGridView是主线程创建的);二是在指定DataSource之前,将其置为null。privatedelegatevoidInvokeHandler();//在子线程中this.Invoke(newInvokeHandler(delegate(){dataGridView1.DataSource=null;dataGridView1.DataSource=myDataSource;}));...

Console 程序为什么会被暂停,要回车才能继续

用C#可以写Console程序,打开就像Dos窗口一样,有时候程序会被无缘无故地暂停,要按一下回车才能继续。这不是C#造成的,其他语言写的Console程序也有类似问题,是由于在窗口上点了鼠标左键造成程序暂停了。目前我还没有从程序上找到好的解决办法,但可以在运行程序的时候,在程序的任务条上右键,属性中取消“快速编辑模式”,这时候不管怎么在窗口上点鼠标,程序都不会暂停了。如下:...

C# 中获取应用程序路径的方法(集合)

stringstr1=Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名。stringstr2=Environment.CurrentDirectory;//获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。//备注按照定义,如果该进程在本地或网络驱动器的根目录中启动,则此属性的值为驱动器名称后跟一个尾部反斜杠(如“C:”)。如果该进程在子目录中启 动,则此属性的值为不带尾部反斜杠的驱动器和子目录路径(如“C:mySubDirectory”)。stringstr3=Directory.GetCurrentDirectory();//获取应用程序的当前工作目录。stringstr4=AppDomain.CurrentDomain.BaseDirectory;//获取基目录,它由程序集冲突解决程序用来探测程序集。stringstr5=Application.StartupPath;//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。stringstr6=Application....

C# 程序员参考手册

http://www.benshu.com/references/...
代码星球 代码星球·2023-04-16
首页上一页12345...下一页尾页