首页 > 代码库 > C# Winform flag寄存器的状态由字母表示转换为01表示的小程序(有大提升)
C# Winform flag寄存器的状态由字母表示转换为01表示的小程序(有大提升)
镇场诗:
———大梦谁觉,水月中建博客。百千磨难,才知世事无常。
———今持佛语,技术无量愿学。愿尽所学,铸一良心博客。
——————————————————————————————————————————
起因,上汇编语言的课,老师让我们判断各个指令运行后flag标志寄存器各个位的状态。这我就不乐意了,第一点,我成了人型编译器,我的创造力呢?
第二点,dos在那里把指令输入,一个-t不都解决了吗?为啥要浪费时间在这里呢?
第三点,我又发现了,老师留的作业,让我们写的是各个位是0是1,而dos出来的字符表示的状态,我又尴尬了,我不想背,用的时候一查表,不就解决了吗,
我不是永动机,就那么点时间与精力,都浪费在背没用的东西上,这可不行。
自己做一个程序出来。把字母的转为01.
1 UI
2 code
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 11 namespace WindowsFormsApplication6 12 { 13 14 public partial class Form1 : Form 15 { 16 17 public Form1() 18 { 19 InitializeComponent(); 20 } 21 /// <summary> 22 /// 用来画出图片,然后在picturebox中显示图片的 23 /// </summary> 24 /// <param name="pBox">哪个picturebox显示画出来的图片呀</param> 25 /// <param name="content">将哪个字符串画进图片呢</param> 26 private void pbShow(PictureBox pBox,string content) 27 { 28 //创建图片对象,一会要给picturebox的 29 //这个图片,宽32,高31,刚好是picturebox的宽与高 30 Bitmap bm = new Bitmap(32, 31); 31 //从指定的Image对象创建新的Grapics画板 32 Graphics g = Graphics.FromImage(bm); 33 //字体是宋体 34 string font = "宋体"; 35 //字体的颜色是白色 36 Color fontColor = Color.White; 37 //创建一个点,这个点就是用来指定被画对象的初始位置 38 Point p = new Point(10, 5); 39 //画字符串 画的内容是content 宋体,12号,粗体 字体的颜色:白色 字体的位置 40 g.DrawString(content, new Font(font, 12, FontStyle.Bold), new SolidBrush(fontColor), p); 41 42 //把画出来的图片交给picturebox吧 43 pBox.Image = bm; 44 } 45 46 //定义一个枚举后,配合bool数组,程序的可读性就会大大提高 47 enum flag:Int16 48 { 49 OF, 50 DF, 51 IF, 52 SF, 53 ZF, 54 AF, 55 PF, 56 CF 57 } 58 59 //flag寄存器的每一位的状态,true对应1,false对应0 60 bool[] eachFlag = new bool[] { true, true, true, true, true, true, true, true }; 61 62 private void Form1_Load(object sender, EventArgs e) 63 { 64 65 } 66 67 #region 16个按钮被点击后的代码 68 /// <summary> 69 /// 按钮被单击,pbOF这个picturebox显示OV字样,然后OF标志位对应在bool数组的内容变为ture 70 /// </summary> 71 /// <param name="sender"></param> 72 /// <param name="e"></param> 73 private void btnOV_Click(object sender, EventArgs e) 74 { 75 pbShow(pbOF,"OV"); 76 eachFlag[(int)flag.OF] = true; 77 } 78 79 private void btnNV_Click(object sender, EventArgs e) 80 { 81 pbShow(pbOF, "NV"); 82 eachFlag[(int)flag.OF] = false; 83 } 84 85 private void btnDN_Click(object sender, EventArgs e) 86 { 87 pbShow(pbDF,"DN"); 88 eachFlag[(int)flag.DF] = true; 89 } 90 91 private void btnUP_Click(object sender, EventArgs e) 92 { 93 pbShow(pbDF, "UP"); 94 eachFlag[(int)flag.DF] = false; 95 } 96 97 private void btnEI_Click(object sender, EventArgs e) 98 { 99 pbShow(pbIF, "EI"); 100 eachFlag[(int)flag.IF] = true; 101 } 102 103 private void btnDI_Click(object sender, EventArgs e) 104 { 105 pbShow(pbIF, "DI"); 106 eachFlag[(int)flag.IF] = false; 107 } 108 109 private void btnNG_Click(object sender, EventArgs e) 110 { 111 pbShow(pbSF, "NG"); 112 eachFlag[(int)flag.SF] = true; 113 } 114 115 private void btnPL_Click(object sender, EventArgs e) 116 { 117 pbShow(pbSF, "PL"); 118 eachFlag[(int)flag.SF] = false; 119 } 120 121 private void btnZR_Click(object sender, EventArgs e) 122 { 123 pbShow(pbZF, "ZR"); 124 eachFlag[(int)flag.ZF] = true; 125 } 126 127 private void btnNZ_Click(object sender, EventArgs e) 128 { 129 pbShow(pbZF, "NZ"); 130 eachFlag[(int)flag.ZF] = false; 131 } 132 133 private void btnAC_Click(object sender, EventArgs e) 134 { 135 pbShow(pbAF, "AC"); 136 eachFlag[(int)flag.AF] = true; 137 } 138 139 private void btnNA_Click(object sender, EventArgs e) 140 { 141 pbShow(pbAF, "NA"); 142 eachFlag[(int)flag.AF] = false; 143 } 144 145 private void btnPE_Click(object sender, EventArgs e) 146 { 147 pbShow(pbPF, "PE"); 148 eachFlag[(int)flag.PF] = true; 149 } 150 151 private void btnPO_Click(object sender, EventArgs e) 152 { 153 pbShow(pbPF, "PO"); 154 eachFlag[(int)flag.PF] = false; 155 } 156 157 private void btnCY_Click(object sender, EventArgs e) 158 { 159 pbShow(pbCF, "CY"); 160 eachFlag[(int)flag.CF] = true; 161 } 162 163 private void btnNC_Click(object sender, EventArgs e) 164 { 165 pbShow(pbCF, "NC"); 166 eachFlag[(int)flag.CF] = false; 167 } 168 #endregion 169 170 /// <summary> 171 /// 显式最终结果,字母对应01的转换 172 /// </summary> 173 /// <param name="sender"></param> 174 /// <param name="e"></param> 175 private void button1_Click(object sender, EventArgs e) 176 { 177 //用一个数组的话,就很好遍历了。 178 PictureBox[] pb = new PictureBox[] { pbOF, pbDF, pbIF, pbSF, pbZF, pbAF, pbPF, pbCF }; 179 //因为要对字符串反复的增添,修改,覆盖。所以我选择了stringbuilder 180 StringBuilder sb = new StringBuilder(); 181 foreach (var item in eachFlag) 182 { 183 if(item) 184 { 185 sb.Append("1"); 186 } 187 else 188 { 189 sb.Append("0"); 190 } 191 } 192 textBox1.Text = sb.ToString(); 193 } 194 195 } 196 }
3 show1
程序说明:
我点一下显示着OV的按钮,下面的picturebox就出现OV字样,为啥要这样做呢?万一我按钮点错了,我作业不就写错了吗。
来个与dos相近的,我一比较,哪里有问题不就出来了吗。
8个按钮都点完后,再点一下,看01按钮。textbox.text中的内容就出来。
show2
感悟:
1 备份!
程序最好的版本是这样的,我增加8个groupbox与16个label标签与8个右键菜单,这样做的意义就是,程序让我看哪几个标志位,我就把剩下的隐藏就OK了。
然而。。。小白没经验,给搞的乱七八糟。最后,bug一堆。。。放弃了。。。
所以,以后项目每完成一定功能,调试好后,将解决方法进行备份。在往下增加功能。
备份!!!!!!!!!!!!!!!!!!!!!!!!!
2 独具匠心。找个安静的环境,开开心心的写程序。
3 我这个小白,算是见识到了,就这么点功能的程序,我写了几个小时。代码消耗时间,界面的设计更消耗时间。
4 见多识广 多参加项目,多见识控件与类。
5 控件的名字,要起得有意义。就算只用一次的控件的名字也要有意义。
6 多写博客!多些优质博客。这个程序的画图函数,就是我参考一篇博客写出来的,知识点有印象,用的时候 一查,就出来了。照着写。VS的提示也足够强大。
参考链接: http://blog.csdn.net/zhangquanok/article/details/9675259
——————————————————————————————————————————
博文的精髓,在技术部分,更在镇场一诗。
C#是优秀的语言,值得努力学习。
如果博文的内容有可以改进的地方,甚至有错误的地方,请留下评论,我一定努力改正,争取铸成一个良心博客。
注:此文仅作为科研学习,如果我无意中侵犯了您的权益,请务必及时告知,我会做出改正。
C# Winform flag寄存器的状态由字母表示转换为01表示的小程序(有大提升)