Syntec C#培训
桃花换小鱼干儿
这个作者很懒,什么都没留下…
展开
-
判断是当前平台是32位还是CE平台
// CheckCurrent System#if WINCE // CE平台#else // 32位平台#endif原创 2020-04-10 15:40:17 · 148 阅读 · 0 评论 -
NotePad++搜索文件内容功能:找寻按键列
应用场景:假设OpenCnc Shared文件夹下有三个文件,实际只有修改其中一个才能真正改到内容,而我们只找到另外一个或两个。解决办法:首先确定客制一定在OpenCnc Shared中,而且三个文件有的内容一定是一模一样的,例如文字显示部分:<Title>Str::Fenu::main::MachineMaker</Title>。这个时候用NotePad++打开其中一...原创 2019-12-17 11:56:31 · 1365 阅读 · 0 评论 -
#if 编译/调试技巧——若遇到需要不同情况下,编译不同的代码
应用情景1:当需要调试的时候,用的代码1,release时候用代码2,具体如下: int a;#if DEBUG a = 1;#else a=2;#endif应用情景2:当需要同时能在CE、32上都能编译运行的时候,例如都要用共同的代码,但是就只有很少一部分代码不一样。 int a;#if WINCE a = 1;#else a=2;#endif...原创 2019-12-16 15:50:53 · 210 阅读 · 0 评论 -
Socket TcpIP总结
1、一般情况下,接收端和发送端长度要匹配2、Send()方法在执行的时候,若多次送出了,但是接收方没有Receive(),此时,可能执行Send时候会有问题(eg:阻塞)。3、Receive()方法实质上并不是接收,而是从缓存区拿东西。因此若是发送方将一整个数据分成多次发送,则接收方也要对应的要多次Receive,然后拼接起来。如发送方是 for( int i = 0; i < ...原创 2019-11-26 14:41:02 · 215 阅读 · 0 评论 -
当两个类都要用到同一个方法同一段代码时,如何优化
当两个类都使用到了同一个方法,且实现的目的完全一样。这样就会在两个地方出现相同的代码。这种情况下有两个方法来解决:方法1、建立一个静态的工具类,将这个方法放进去,这样大家都能调用了方法2、建立一个Project,专门用来生成dll文件的,然后引用这个dll...原创 2019-11-21 10:02:23 · 1393 阅读 · 0 评论 -
C# 获取系统当前时间——时 : 分
方法1、DateTime.Now.ToShortTimeString().ToString()方法2、DateTime.Now.ToString( "t" )原创 2019-11-21 09:44:47 · 1492 阅读 · 0 评论 -
C#培训2019-11-20 ChatRoom作业——老师提出的问题总结
1、在Console程序中,Main函式一般不会做事,只是把别人new出来,因为如果做事就会被static限制住。并且一般不会只new,一般new完后会调用方法来“开始”。2、Server的manager人有两个全局变量,一个存着所有的与客户端对接的人,一个存着客户的名称。:这样从维护性来讲不好,因为别人在移除时可能不知道要移除List内容时候,要同时移除两个。同时前者又能实现后者的全部功能。...原创 2019-11-20 14:34:21 · 142 阅读 · 0 评论 -
Socket传输时 去掉接收到的多余信息“\0”
"\0"代表的是截止符,去除的方法有:方法一: szRepeated.Trim( ‘\0’ )//这个方法有时候不是很好用方法二:szRepeated.Replace( "\0", "" )//将0替换成空字符原创 2019-11-19 12:15:13 · 1648 阅读 · 1 评论 -
C#培训2019-11-19 Socket 判断是否还连接着
利用以下代码就可以判断是否连接。其中“10”表示等待响应时间(ms) // check is connected if( m_acceptSocket.Poll( 10, SelectMode.SelectRead ) == true ) { return; }原创 2019-11-19 09:14:44 · 182 阅读 · 0 评论 -
C#在textbox输入后,按enter键就会相当于按一个按钮
form里找到AcceptButton属性,选择你要ENTER的按钮就可以了,不用对按钮和textbox操作。原创 2019-11-19 09:00:32 · 3233 阅读 · 0 评论 -
C# 无需使用的对象怎么清除
某些时候我们不想用一些对象时,希望它清除掉。这时候怎么办呢?或者说什么时候才能清除呢?答:首先c#是有垃圾回收机制的,当一个对象没有任何变量指向它时,就会被垃圾回收器(GC)回收,但是不一定是立刻回收。其次如果对象中开了一个线程在做事,此时垃圾回收器就不一定会回收它了。直到这个线程做完事情了,才会一定被回收。...原创 2019-11-18 17:53:52 · 1593 阅读 · 0 评论 -
Threading中的Timer用法
在前面的数独题目中,若自动解题功能想要计时,而算的时间又比较长,此时使用Windows.Form.Timer进行刷新会卡住不刷新。当时是使用多开一个线程来解决这个问题的,其实可以使用Threading中的Timer来解决,如: public Sudoku() { // 500ms执行一次 Timer timer = new Timer( new TimerCallback( T...原创 2019-11-15 14:43:16 · 1044 阅读 · 0 评论 -
C#培训2019-11-15 Socket 实现两个应用之间通信(相同/不同主机之间)
Socket利用TCP/IP通信方法,实现一台主机中两个应用通信,或者多台主机中应用的通信。引用using System.Net.Sockets; using System.Net;1、Server端设置:Server端主要是用来监听Client端是否有连接的。范例代码如下:using System;using System.Collections.Generic;using Syste...原创 2019-11-15 10:47:19 · 877 阅读 · 0 评论 -
ListView控件的使用方法(detail模式)
首先将View属性的值改为Details;一、创建表题参考代码如下: void Form1_Load( object sender, EventArgs e ) { lsvRecord.Columns.Add( "Room", 60, HorizontalAlignment.Center ); lsvRecord.Columns.Add( "Name", 100, Hori...原创 2019-11-14 14:48:15 · 1229 阅读 · 0 评论 -
不引用dll如何调用dll链接库(动态调用,不知道有没有这个dll)
类似于人机在Plugin中调用的dll,方法如下:static void Main( string[] args ) { // 读取dll Assembly assembly = Assembly.LoadFrom( "ClassLibrary.dll" ); //获取要实例化类的类型 Type type = assembly.GetType( "ClassLib...原创 2019-11-14 14:46:40 · 350 阅读 · 0 评论 -
里式转换的好处/应用——父类引用指向子类对象——定义一个父类的变量,指向子类的对象
里式转换是什么前面有文章将的很清楚了,详见:https://blog.csdn.net/qq_41617697/article/details/102931282这里讲一下好处:①同一行代码,因为new的类不同,因此执行的效果就不同②责任分清楚:例如在人机画面中,有一个人叫“ScreamManager”,他不需要知道每一个Scream,但是又同时又要控制它,分别对应不同的方法。...原创 2019-11-12 11:11:10 · 169 阅读 · 0 评论 -
winform中将关闭Form变成隐藏(Hide)起来,防止下一次Show出错
在Form的closing事件中,对关闭窗体进行取消,同时隐藏窗体: void ReservationRecordUI_FormClosing( object sender, FormClosingEventArgs e ) { e.Cancel = true; Hide(); }...原创 2019-11-12 10:55:50 · 3008 阅读 · 0 评论 -
CheckBox放在一个groupbox中 考虑拓展性
1、挂载Checkbox的事件时候,可以先遍历GroupBox中有几个CheckBox控件,若有,则直接挂载,这样的话新增一个Checkbox,不用新增挂载代码;2、所有的CheckBox的事件也是挂载同一个方法,这样就可以避免新增时候多写一个方法。...原创 2019-11-08 16:36:38 · 1182 阅读 · 0 评论 -
params关键字,指定一个方法参数,该方法参数的数目可变。
使用 params 关键字可以指定采用数目可变的参数的方法参数。可以发送参数声明中所指定类型的逗号分隔的参数列表或指定类型的参数数组。 还可以不发送参数。 如果未发送任何参数,则 params 列表的长度为零。在方法声明中的 params 关键字之后不允许有任何其他参数,并且在方法声明中只允许有一个 params 关键字。声明的 params 参数类型必须是一维数组。具体的使用方法可见MS...原创 2019-11-08 10:40:03 · 627 阅读 · 0 评论 -
什么时候可以用static修饰方法
static非常好用,但是我们要记得不能滥用,不能只是因为可以省去new对象的优点,就直接把方法变成静态方法。什么情况下用static修饰方法呢?①用法很单纯,只有这边用(例如求某个数列的第几项)②只是用这个类里面的方法,就没有必要把它整个实例化出来。...原创 2019-11-07 09:31:25 · 733 阅读 · 1 评论 -
父类引用指向子类对象——定义一个父类的变量,指向子类的对象
我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类。我可以通过Cat c = new Cat();实例化一个Cat对象,这个不难理解。但当我这样定义时:Animal a = new Cat();这样代表什么意思呢?我定义了一个Animal类型的引用,指向新建的Cat类型的对象。由于Cat是继承自它的父类Animal,所以Animal类型的引用是可以指向Cat类型的...转载 2019-11-06 11:11:43 · 1620 阅读 · 1 评论 -
C#培训2019-11-4 架构讨论
jira:确定是否bug,进行处理,最终议题;SyntecIDE(SI):所有软件都在的例题1:新增加密功能,有三个类,1、加密管理者;2、检查是否合法;3、插入检查方法;4、加密。...原创 2019-11-04 17:56:11 · 248 阅读 · 0 评论 -
获取当前活动控件(光标所在的textbox控件)
利用一下代码:TextBox CurrentInputTextbox = this.ActiveControl as TextBox;原创 2019-11-04 16:11:28 · 847 阅读 · 0 评论 -
C#培训2019-10-30 Struct 的使用
在求解数独的过程中,若不使用继承的方法做,可以创建一个List以及一个Struct,Struct中包含 行、列以及方块所在区块的信息。然后将Struct装在List中,List的长度为81。这样每一个textbox都对应了一个Struct,都有 行、列以及所在区域的信息。使用Struct和使用Class问:这一题中其实使用Class也能实现上述功能,但是为什么要用Struct,或者何时用Str...原创 2019-10-31 09:05:30 · 167 阅读 · 0 评论 -
C#培训2019-10-30 数独问题 老师讲解
一、Magic Number问题1、有些数字不用单独的变量装其实也可以,也不算是MagicNumber,例如ASCII中的96 48之类的。2、实在有一些数字不想用变量装,可以注释讲清楚。例如下面的代码,2/6、3/5也没有什么独特的含义,只是用来区分区块的。并且呢其他地方也调用不到这个函数,这个时候可以注释清楚作用是什么就行。 // Change the color of the four...原创 2019-10-30 13:43:30 · 118 阅读 · 0 评论 -
C#培训2019-10-29 关于TextBox的一些基本操作:多行、输入字符限制、居中
1、当要改变TextBox的高度信息时(变更高),则必须将Multiline 属性改为true:textBox.Multiline = true;2、设置TextBox只能输入一个字符,改变MaxLength 属性为1:textBox.MaxLength = 1;3、水平居中显示文本,改变TextAlign 属性为HorizontalAlignment.Center:textBox....原创 2019-10-30 11:12:16 · 893 阅读 · 0 评论 -
C#培训2019-10-29 KeyPress事件应用——确保输入只是数字1~9,而没有英文、字符以及数字0
利用KeyPress的键值判断,来实现筛掉字符的功能,范例如下: void textBox_KeyPress( object sender, KeyPressEventArgs e ) { int nBackSpaceKeyChar = 8; int nZeroKeyChar = 48; // Exclusion is not a number and symbolic...原创 2019-10-30 10:59:55 · 350 阅读 · 0 评论 -
C#培训2019-10-29 winform中KeyPress 、TextChanged、KeyDown三个事件的配合应用
触发优先级:KeyDown → KeyPress → TextChanged按下按键时候:1、首先进入的是KeyDown ,我这里利用“KeyDown ”进行组合键判断 ;2、接着进入KeyPress ,我这里利用“KeyPress ”进行数字和字符输入的判断,也就是说拦掉不合法输入;3、最后进入TextChanged,此时进入TextChanged的数字就一定是合法的输入了(不一定符合游...原创 2019-10-30 10:55:23 · 885 阅读 · 0 评论 -
C#培训2019-10-29 KeyDown事件应用——响应组合键“ Ctrl + T ”
响应组合键“ Ctrl + T ” void textBox_KeyDown( object sender, KeyEventArgs e ) { // Press Ctrl + T if( ( Control.ModifierKeys & Keys.Control ) != 0 && e.KeyCode == Keys.T ) { InputT...原创 2019-10-30 10:38:55 · 577 阅读 · 0 评论 -
C#培训2019-10-28数独总结1
一、常规bug排除我们要在客户给的规格中,进行延伸,来判断各种操作是否会有bug产生。例如:1.在数独题目中,规格要求汇入题目后,题目的部分不能被改动。我正常测试没有问题,但是我的代码中,如果先汇入一个题目,再汇入第二个题目后,第一个题目原来有数字的地方也不能改动了。()这部分操作没有考虑到)2.在汇入正确题目后,再次汇入不同种类(字母/长度不对等)的错误题目时,对原来题目的操作不一致(有...原创 2019-10-30 09:15:40 · 149 阅读 · 0 评论 -
C#培训2019-10-25 关于延时与Timer的问题 (改变控件颜色后,让其保持这个颜色一段时间,而实际运行颜色根本没有变)
问题一、颜色改变问题:若想达到题目的目的,第一反应是将控件颜色改变,然后下一行就写延时,延时完做其它的动作。如:void Move(){ //移动一段距离 if(//到达边界条件){ //亮灯 panel.BackColor = Color.Yellow; //延时一段时间 Thread.Sleep(300); //执行其余动作 }}但是实际上,这样执行的时候,...原创 2019-10-25 15:57:33 · 699 阅读 · 0 评论 -
C#培训2019-10-25 关于delegrate 委托返回传值,事件返回传值
一、正常使用委托若是正常使用委托来进行方法体的“传值”。则可以有返回值,因为执行的那个方法时确定的。二、在事件中使用委托若在使用事件的时候想要获得返回信息,则是不可行的。从合理性考虑:这个事件本身是不知道有多少人挂载它的,如果有返回值,那究竟是返回哪一个呢?具体的可以查看:https://kudchikarsk.com/delegates-and-events-in-csharp/...原创 2019-10-25 14:16:05 · 293 阅读 · 0 评论 -
C#培训2019-10-25 关于Stack(堆)和Heap(栈)以及Stack(堆栈)和Queue(队列)
前言:首先Stack在C#中有两种含义:①数据结构:堆栈(Stack),与之对应的是Queue(队列);②内存地址:堆(Stack),与之对应的是Heap(栈)。一、内存地址:堆(Stack)和栈(Heap / [hiːp])Stack(堆):一般为函数调用时候用的,内存很少(1~2M)Heap (栈) :一般用作储存对象/实例,内存较大(几个G)由于Stack的内存较小,因此某些情况下...原创 2019-10-25 14:05:12 · 372 阅读 · 0 评论 -
C#培训2019-10-24 关于继承的两点问题
一、若猫继承自动物,则猫会自动复制动物除建构子之外的所有方法。二、如果把狗放进动物的盒子里:Animal animal = New Dog(),那么让这个“动物”叫的话,就会是“汪汪”。个人理解:因为上述第一点所述,“狗”的对象其实是拥有“狗叫”和“动物叫”两个方法的,其中“狗叫”是overload“动物叫”的方法。当把狗装进动物盒子中时候,让动物叫,动物会调用“叫”这个方法,由于“动物”有两...原创 2019-10-25 09:22:32 · 120 阅读 · 0 评论 -
C#培训2019-10-23第七课方块移动 Form控制方块移动2 — 老师问题讲解
1、首先借用了上一题的代码:为了存方向信息,用了一个数组。这样所有方块的方向信息就得用一个二维数组,如下:MovingDirection[] m_DirectionArray = new MovingDirection[ 4 ];MovingDirection[][] m_AllObjtctDirectionArray = new MovingDirection[ m_nObjectNumbe...原创 2019-10-23 17:26:34 · 296 阅读 · 0 评论 -
C#培训2019-10-23第七课方块移动 Form控制方块先后运动解决方案
一、我的思路:分成两部分来实现:1、第20个方块移动之前:首先触发第一次:第一个方块移动;首先触发第二次:第一个和第二个方块移动;首先触发第三次:第一个第二个第三个方块移动;以此类推。2、所有的都持续移动:触发一次,所有的方块都触发。具体代码如下: void m_tmr1_Tick( object sender, EventArgs e ) { // 1、Delay trigg...原创 2019-10-23 12:52:00 · 2081 阅读 · 0 评论 -
C#培训2019-10-22 第六课方块移动的事件修改处理、事件挂载问题、各个类分工问题
问题一、各个类的分工要明确。首先我是准备让方块一直动这过程在Form中实现,也就是一直触发“MoveObject”的方法来实现持续移动。我的设计问题:Form控制方块其实只有第一次有效,后面虽然Form一直在命令,但是方向信息用的是它本身存起来的方向信息。设计原因:因为直接修改方向信息的话,会使得第一个方块到底部时候,所有方块都反向了。然后就想了这个方法。总结:初始思路没有问题,“持续动作...原创 2019-10-23 09:37:42 · 151 阅读 · 0 评论 -
延时方法记录
一、通过抓取时间来达到延时的效果 void MySleep( double seconds ) { DateTime start_time = DateTime.Now; while( true ) { // See how much time has passed. TimeSpan elapsed = DateTime.Now - start_time;...原创 2019-10-22 15:40:38 · 496 阅读 · 0 评论 -
C#培训2019-10-22第六课事件的练习题——两个窗体通过事件传值;将类与类分开
一、两个窗体之间通过事件传值:Form2是在Form1中new出来的。当Form2按钮按下时,可以将按钮的Text信息传递给Form1显示。解决:①事件的定义:在Form2中。由于实际出发事件是在Form2中,所以是在Form2中定义。 // 定义hander,就可以自定义事件的传值个数和类型 public delegate void TriggerEventHander( strin...原创 2019-10-22 11:33:02 · 204 阅读 · 0 评论 -
C#培训2019-10-21第五课 方块移动加入全新概念
一、PPT内容要点总结:1.不能仅用流程图去完成程式,流程图只是相对简单的逻辑,具体一点的是“作文”2.不能因为程式小,就不用面向对象的概念去写。3.只要有实体的东西,那么它就可以作为一个类。例如:“方块”、“灯”、“控制器”等4.类与类之间最好不要相互认识。之前是直接控制对象去做事,后面呢,可以改为触发事件,由类自己来做事。5.把别的类不该知道的抽出来,封装起来。二、大神移动方块程式...原创 2019-10-21 11:17:29 · 178 阅读 · 0 评论