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

看下面的代码: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

如何编译运行 C# 程序

在C#章节中,前面的文章我们都是将C#作为ASP.NET的开发语言来介绍的,其中的代码都受到了ASP.NET的影响,比如Page_Load函数就属于ASP.NET的内容,在本章节以后的部分文章中,我们将介绍“纯”C#,它不在ASP.NET中运行,遍身上下皆是C#代码,所以我们先讲一讲如何编译运行“纯”C#程序。编辑“纯”C#代码,就是编辑C#类文件,扩展名为.cs(VB类文件扩展名为.vb),可以用任何文本编辑器编辑。C#是完全面向对象的,不存在全局的变量、常量和函数,所以所有程序代码都集中在类中,将某个类的Main函数作为程序入口函数就可以运行了。关于如何编写这些类,我们在今后的文章中有专门介绍,下面谈谈如何把.cs文件编译成.exe文件。 要将.cs文件编译成.exe文件,需要一个csc.exe(以下简称csc)文件(编译.vb的文件是vbc.exe),在安装了.NETFramework后,我们可以在类似C:WINDOWSMicrosoft.NETFrameworkv2.0.50727的位置找到这个文件,我们应该在命令提示符中运行这个文件,可以通过csc/?查看该程序的选...
代码星球 代码星球·2023-04-16

Linux平台上使用gdb调试程序

gdb是Linux/UNIX平台下的一个程序调试工具,它是由GNU开源组织发布的。在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。我们使用gdb时,主要用它来完成以下几个方面的工作。1、启动程序,在启动时,可以按照你想要的环境来运行程序。2、设置断点,什么是断点,这里不解释。断点可以是行数,程序名称或条件表达式。3、查看信息,在运行到断点处时,可以查看程序运行信息,显示变量的当前值。4、分步运行:让程序一步一步的运行,便于观察程序运行的路径、变量值等。5、改变环境:可以在程序运行时修改运行环境和程序变量。一、加入调试信息在使用gdb之前,必须在编程程序时加入供gdb使用的调试信息。且看下面例子:gcc-g-otest.debugtest.c这个编译语句的作用是,对test.c做编译,生成一个test.debug文件,-g表示加入调试信息。加了-g后生成的目标文件将比不加的要大很多。如果在测试的时候,一般带上-g参数,以便可以调试;正常情况下发布一个软件,不加-g参数。二、启动gdb直接在终端输入gdb三、加载需要调试的程序这里我们把tes...

esp32 +oled显示英文、中文

frommachineimportPin,I2CfromoledimportSSD1306_I2C#定义管脚scl=Pin(22)sda=Pin(21)#初始化i2c=I2C(scl=scl,sda=sda)#像素128*64oled=SSD1306_I2C(128,64,i2c)#清屏oled.fill(0)oled.show()#显示英文,从0,0像素开始oled.text('hello',0,0)oled.show()#以下为显示中文,重新显示需要清屏。fonts字体为自定义取模。#字索引为utf-816进制fonts={#你0xe4bda0:[0x11,0x11,0x11,0x23,0x22,0x64,0xA8,0x20,0x21,0x21,0x22,0x24,0x20,0x20,0x21,0x20,0x00,0x00,0x00,0xFC,0x04,0x08,0x40,0x40,0x50,0x48,0x4C,0x44,0x40,0x40,0x40,0x80],#好0xe5a5bd:[0x10,0x11,0x10,0x10,0xFC,0x24,0x24,0x27,0x24,0x4...

程序员怎么网上接活?

程序员怎么网上接活? 目前有那些垂直的网上接活平台?...

微信小程序域名被封如何申诉解封

1、明确非法地址在申请之前,我们首先要明确非法地址并完成溯源,找到根本原因并解决问题。点击页面提示拦截最底部的申请恢复访问,随后会出现相应的违法地址列表,复制查看并解决。2、申诉入口1)直接到腾讯安全中心平台申诉,把申诉地址复制上去提交即可。平台地址:https://urlsec.qq.com/complain.html2)如果上面申诉无效,可以直接发邮箱给腾讯处理。收件人:momenttencent.com发送标题:域名解封xxx.com邮件内容:描述清楚什么原因导致,目前解决进度情况等。...
首页上一页...34567...下一页尾页