第一章 WinForm窗体开发
实例001带图像列表的系统登陆程序
关键技术:ListView
遇到困难:
1、
错误 CS0103 当前上下文中不存在名称“lv_Person” 001 C:\Users\Erato\source\repos\001\001\Form1.cs 26 活动(猜测及解决办法:要么是我打错了,要么就是还需要添加新的using,等待打开源代码确认)
解决方法:将ListView的(Name)属性更改成lv_Person
2、
错误 CS1061 ‘“Form1”未包含“txt_UserName”的定义,并且找不到可接受第一个“Form1”类型参数的可访问扩展方法“txt_UserName”(是否缺少 using 指令或程序集引用?) 001 C:\Users\Erato\source\repos\001\001\Form1.cs 53 活动(这个可能是真的缺少using)
解决方法:例子抄到一半就懂了,UserName应该是用户名后的TextBox,查源代码果然如此
3、
错误 CS1503 参数 1: 无法从“System.Data.DataRow”转换为“System.Data.DataTable” 001 C:\Users\Erato\source\repos\001\001\Form1.cs 55 活动(事实上不知道错在什么地方,等看看改动了哪里我就知道是怎么回事了)
解决方法:打错了一个字母
4、
错误 CS0103 当前上下文中不存在名称“imageList1” 001 C:\Users\Erato\source\repos\001\001\Form1.cs 24 活动(这是什么东西我也完全不晓得,反正就是不存在这个东西)
解决方法:在ListView的LargeImageList属性中添加imageList1,搜索得知,先添加组件imageList,再从ListView的LargeImageList中添加imageList1
最终效果:
代码如下:
using System;using System.Data;using System.Windows.Forms;namespace _001{public partial class Form1 : Form{public Form1(){InitializeComponent();}DataTable dt = new DataTable();private void Form1_Load(object sender, EventArgs e){lv_Person.View = View.LargeIcon;lv_Person.LargeImageList = imageList1;DataColumn column = new DataColumn();column.DataType =System.Type.GetType("System.String");column.ColumnName = "userName";dt.Columns.Add(column);}private void Method(DataTable dt){lv_Person.Items.Clear();for (int j = 0; j < dt.Rows.Count; j ++){if (j % 2 == 0){lv_Person.Items.Add(dt.Rows[j][0].ToString(), 0);}else{lv_Person.Items.Add(dt.Rows[j][0].ToString(), 1);}}}private void button2_Click(object sender, EventArgs e){this.Close();}private void button1_Click(object sender, EventArgs e){DataRow dr;dr = dt.NewRow();dr["userName"] = this.txt_UserName.Text;dt.Rows.Add(dr);Method(dt);}}}
本次小结:
1、demo里关键字是什么不要紧,先搞清楚这是用来干什么的,再按功能找,总能找到。
2、目前没有理解这个demo到底有什么作用0.0
实例002使用Timer组件实现冬奥会倒计时
关键技术:Timer组件的Enabled属性
遇到困难:
1、
错误 CS0103 当前上下文中不存在名称“DateAndTime” 002 C:\Users\Erato\source\repos\002\002\Form1.cs 24 活动(与下述一共三个错误一起,怀疑是缺少什么方法)
解决办法:看过源代码后确认,需要添加using Microsoft.VisualBasic,但是不知道为什么依旧报错,再通过小灯泡点击使用using Microsoft.VisualBasic后启用了,怀疑自己打错字母
2、
错误 CS0103 当前上下文中不存在名称“FirstDayOfWeek” 002 C:\Users\Erato\source\repos\002\002\Form1.cs 24 活动
解决办法:同上
3、
错误 CS0103 当前上下文中不存在名称“FirstWeekOfYear” 002 C:\Users\Erato\source\repos\002\002\Form1.cs 24 活动
解决办法:同上
4、
错误 CS0103 当前上下文中不存在名称“TextBox1” 002 C:\Users\Erato\source\repos\002\002\Form1.cs 30 活动(在这个时候发现testbox数量超过窗体上限了,猜测此处textbox1是冬奥会时间)
解决办法:当前时间改为textBox1,冬奥会时间改为textbox2
**
最终效果:

代码如下:
using System;using System.Windows.Forms;using Microsoft.VisualBasic;namespace _002{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){textBox2.Text = "2020/2/4 00:00:00" + "星期五";timer1.Enabled = true;}private void timer1_Tick(object sender, EventArgs e){DateTime get_time1 = DateTime.Now;DateTime sta_ontome1 = Convert.ToDateTime(Convert.ToDateTime("2020-2-4 00:00:00"));textYear.Text = DateAndTime.DateDiff("y", get_time1, sta_ontome1, FirstDayOfWeek.Sunday, FirstWeekOfYear.FirstFourDays).ToString();textMonth.Text = DateAndTime.DateDiff("m", get_time1, sta_ontome1, FirstDayOfWeek.Sunday, FirstWeekOfYear.FirstFourDays).ToString();textDay.Text = DateAndTime.DateDiff("d", get_time1, sta_ontome1, FirstDayOfWeek.Sunday, FirstWeekOfYear.FirstFourDays).ToString();textHour.Text = DateAndTime.DateDiff("h", get_time1, sta_ontome1, FirstDayOfWeek.Sunday, FirstWeekOfYear.FirstFourDays).ToString();textmintue.Text = DateAndTime.DateDiff("n", get_time1, sta_ontome1, FirstDayOfWeek.Sunday, FirstWeekOfYear.FirstFourDays).ToString();textsecon.Text = DateAndTime.DateDiff("s", get_time1, sta_ontome1, FirstDayOfWeek.Sunday, FirstWeekOfYear.FirstFourDays).ToString();textBox1.Text = DateTime.Now.ToString();}}}
本次小结:
1、应该先理解关键代码的意义再开始启用控件修改属性
2、应当尽可能多熟悉各类using功能
实例003自定义最大化、最小化和关闭按钮
关键技术:WindowState
遇到困难:
1、
错误 CS0120 对象引用对于非静态的字段、方法或属性“Form.WindowState”是必需的 003 C:\Users\Erato\source\repos\003\003\Form1.cs 27 活动(怀疑与困难3是同一类困难,可能需要定义特定方法解决问题,经验证,放在主函数也不行)
2、
错误 CS0201 只有 assignment、call、increment、decrement 和 new 对象表达式可用作语句 003 C:\Users\Erato\source\repos\003\003\Form1.cs 34 活动(。。。)
解决方法:删掉一个=
3、
错误 CS0120 对象引用对于非静态的字段、方法或属性“Form.Close()”是必需的 003 C:\Users\Erato\source\repos\003\003\Form1.cs 44 活动(同1)
4、
确定使用的图片以后为了完整显示图片没办法调整picturebox的像素大小,图片有白边(怀疑并没有调整的办法,只有通过图片素材来解决,如果图片格式为png则没有白边)
解决方法:换图片,或者**?
5、
源代码中窗体完全是自己设计的,原先的最大化最小化退出三个按钮不存在,怀疑还需要用到其他知识
解决方法:在窗体属性当中找到MaximizeBox和MinimizeBox,接修改为False即可使最大化和最小化按钮消失,但并未解决问题,查阅资料发现,将窗体的FormBorderStyle属性设置为None,设置后窗体的标题栏将消失不显示
6、
未知原因无法调用Resources中的图片,定义属性字段以后不发生报错,但还是无法调用图片
解决方法:未知
最终效果:
未能实现预期效果,未能解决问题
代码如下:
namespace _003{public partial class Form_Main : Form{public Form_Main(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){panel_Title.BackgroundImage = Resources.登录界面标题;panel_All.BackgroundImage = Resources.登陆界面下面;pictureBox_Close.Image = null;pictureBox_Close.Image = Resources.关闭按钮;pictureBox_Max.Image = null;pictureBox_Max.Image = Resources.最大化按钮;pictureBox_Min.Image = null;pictureBox_Min.Image = Resources.最小化按钮;}public void FrmClickMeans(Form Frm_Tem, int n){switch (n){case 0:Frm_Tem.WindowState = FormWindowState.Minimized;break;case 1:if (Frm_Tem.WindowState == FormWindowState.Maximized){Frm_Tem.WindowState = FormWindowState.Normal;}else{Frm_Tem.WindowState = FormWindowState.Maximized;}break;case 2:Frm_Tem.Close();break;}}public static PictureBox Tem_PictB = new PictureBox();public void ImageSwitch(object sender, int n, int ns){Tem_PictB = (PictureBox)sender;switch (n){case 0:Tem_PictB.Image = null;if (ns == 0){Tem_PictB.Image = Resources.最小化变色;}if (ns == 1){Tem_PictB.Image = Resources.最小化按钮;}break;case 1:Tem_PictB.Image = null;if (ns == 0){Tem_PictB.Image = Resources.最大化变色;}if (ns == 1){Tem_PictB.Image = Resources.最大化按钮;}break;case 2:Tem_PictB.Image = null;if (ns == 0){Tem_PictB.Image = Resources.关闭变色;}if (ns == 1){Tem_PictB.Image = Resources.关闭按钮;}break;}}private void pictureBox_Close_Click(object sender, EventArgs e){FrmClickMeans(this, Convert.ToInt32(((PictureBox)sender).Tag.ToString()));}private void pictureBox_Close_MouseEnter(object sender, EventArgs e){ImageSwitch(this, Convert.ToInt32(((PictureBox)sender).Tag.ToString()), 0);}private void pictureBox_Close_MouseLeave(object sender, EventArgs e){ImageSwitch(this, Convert.ToInt32(((PictureBox)sender).Tag.ToString()), 1);}}}
本次小结:
未完成预期目标,不想写小结
实例004图形化的导航界面
关键技术:Button控件的BackColor属性、FlatStyle属性和TextImageRelation属性
遇到困难:
最终效果:
代码如下:
本次小结:
实例005字母与ASCII码的转换
关键技术:
遇到困难:
最终效果:
代码如下:
本次小结:
实例006
关键技术:
遇到困难:
最终效果:
代码如下:
本次小结:
第二章文件操作
第三章图形图像及打印
第四章系统及注册表操作
第五章数据库操作应用
第六章网络安全及硬件控制
