




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验二 .Net平台上窗体程序设计一、实验目的:掌握窗体应用程序的编写与调试方法二、实验内容: 1、编写C#.net窗体应用程序,并调试。2、开发一个主题设计器的颜色设置功能部分,详细情况参考附件Debug.rar中的可执行程序演示的功能。3、实验报告要求附上主题设计器颜色设置功能的源代码,及运行效果示意图。3、 收获与体会(要求小组成员简要填写在课程实验中遇到的主要问题以及解决方法,并手工签上小组所有成员姓名):实验过程中遇到的问题及解决方法:本次实验我们创建了ColorComboBox和ColorControl两个自定义控件,分别用以实现下拉菜单中可以显示颜色以及控制多路颜色的变化。对于ColorControl控件,使用ChangeColor方法实现统一变更颜色,用一个枚举变量来定义可以更改的内部控件。在外部调用时,只需将其作为参数传入ChangeColor方法即可实现变更颜色。体会:虽然这个程序不难编程但是也让我们发现了自己在编程上的许多问题,以及对一些C#的语法还不够熟悉,但也让我们知道自己的不足,以及自己今后需要进行加强的方面是什么。更让我们体会到了团队合作的精神,以及大家在一起互帮互助,共同解决问题的感觉。相信我们今后也会更加默契,共同学习,共同进步。签名:附加代码using System;using System.Collections.Generic;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace 主体颜色编辑器 public class ColorComboBox : ComboBox private void InitItems() this.DrawMode = DrawMode.OwnerDrawFixed;/手动绘制所有元素 this.DropDownStyle = ComboBoxStyle.DropDownList;/下拉框样式设置为不能编辑 this.Items.Clear();/清空原有项 Array allColors = Enum.GetValues(typeof(KnownColor);/获取系统颜色名存入列表 foreach (KnownColor var in allColors) this.Items.Add(var.ToString(); /加载该选项框的子项 public ColorComboBox() : base() InitItems(); protected override void OnDrawItem(DrawItemEventArgs e) if (e.Index = 0)/判断是否需要重绘 string colorName = this.Itemse.Index.ToString();/获取颜色名 SolidBrush brush = new SolidBrush(Color.FromName(colorName);/定义画刷 Font font = new Font(宋体, 9);/定义字体 Rectangle rect = e.Bounds; rect.Inflate(-2, -2); Rectangle rectColor = new Rectangle(rect.Location, new Size(20, rect.Height); e.Graphics.FillRectangle(brush, rectColor);/填充颜色 e.Graphics.DrawRectangle(Pens.Black, rectColor);/绘制边框 e.Graphics.DrawString(colorName, font, Brushes.Black, (rect.X + 22), rect.Y);/绘制文字 / / 选择的颜色名称 / public string SelectedColorName get return this.Text; / / 选择的颜色 / public Color SelectedColor get return Color.FromName(this.Text); public partial class ColorControl : UserControl public ColorControl() InitializeComponent(); this.labelArea1.BackColor = this.BackColor; this.labelArea2.BackColor = this.BackColor; this.labelArea3.BackColor = this.BackColor; this.labelArea4.BackColor = this.BackColor; this.labelLink.BackColor = this.BackColor; this.labelLink.ForeColor = this.BackColor; this.labelBackLink.BackColor = this.BackColor; this.labelBackLink.ForeColor = this.BackColor; this.labelPanel.BackColor = this.BackColor; / / 更换颜色 / / 待更换颜色的目标控件 / 待更换的颜色 public void ChangeColor(ColorControlInnerControls control, Color color) string ToChange = label; bool ifLink = false; switch (control) case ColorControlInnerControls.Area1: ToChange += Area1; break; case ColorControlInnerControls.Area2: ToChange += Area2; break; case ColorControlInnerControls.Area3: ToChange += Area3; break; case ColorControlInnerControls.Area4: ToChange += Area4; break; case ColorControlInnerControls.BackLink: ToChange += BackLink; ifLink = true; break; case ColorControlInnerControls.Link: ToChange += Link; ifLink = true; break; case ColorControlInnerControls.Panel: ToChange += Panel; break; if (ifLink = false) this.ControlsToChange.BackColor = color; else this.ControlsToChange.ForeColor = color; private void labelPanel_BackColorChanged(object sender, EventArgs e) this.labelLink.BackColor = labelPanel.BackColor; this.labelBackLink.BackColor = labelPanel.BackColor; / / ColorControl的内部控件 / public enum ColorControlInnerControls Panel, Area1, Area2, Area3, Area4, Link, BackLink public partial class MainForm : Form public MainForm() InitializeComponent(); private void Form1_Load(object sender, EventArgs e) InitializeComboBox(colorComboBoxPanel1); InitializeComboBox(colorComboBoxPanel2); InitializeComboBox(colorComboBoxArea1); InitializeComboBox(colorComboBoxArea2); InitializeComboBox(colorComboBoxArea3); InitializeComboBox(colorComboBoxArea4); InitializeComboBox(colorComboBoxLink); InitializeComboBox(colorComboBoxBackLink); private void colorComboBoxSelectedIndexChanged(object sender, EventArgs e) ColorControlInnerControls ToChange = ColorControlInnerControls.Panel; string ToChangeColor = (ColorComboBox)sender).Name.Replace(colorComboBox, ); string ControlName = (ColorComboBox)sender).Name.Replace(colorComboBox, ); ControlName = ControlName0 = P ? colorControl + ControlName5 : All; switch (ToChangeColor) case Panel1: ToChange = ColorControlInnerControls.Panel; break; case Panel2: ToChange = ColorControlInnerControls.Panel; break; case Area1: ToChange = ColorControlInnerControls.Area1; break; case Area2: ToChange = ColorControlInnerControls.Area2; break; case Area3: ToChange = ColorControlInnerControls.Area3; break; case Area4: ToChange = ColorControlInnerControls.Area4; break; case Link: ToChange = ColorControlInnerControls.Link; break; case BackLink: ToChange = ColorControlInnerControls.BackLink; break; /更换颜色 if (ControlName != All) (ColorControl)this.ControlsControlName).ChangeColor(ToChange, (ColorComboBox)sender).SelectedColor); else this.colorControl1.ChangeColor(ToChange, (ColorComboBox)sender).SelectedColor); this.co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新型储能材料生产线项目节能评估报告
- 2025年福建美术学科真题及答案
- 2025年血站采血考试试题及答案
- 灌云县2024-2025学年第一学期四年级数学期末学业评价题库及答案
- 拆除过程中材料搬运与堆放方案
- 离异父母子女抚养费支付及家庭财产分配调整合同
- 离婚房产分割及赡养费支付协议范本
- 沙盘模拟经营试题及答案
- 主题公园舞台租赁与互动体验项目合作协议
- 航空安全员上岗培训及答案
- 麻醉科降低围术期低体温PDCA
- GB 42590-2023民用无人驾驶航空器系统安全要求
- 《精神科护理学》练习题及答案
- 护士执业注册体检表
- 直升机结构与系统版
- 新生儿疾病诊疗规范诊疗指南诊疗常规2022版
- 外科学 胃十二指肠疾病
- 《智能投顾 大数据智能驱动投顾创新》读书笔记思维导图
- 职工自愿放弃社会保险协议
- 高中英语Unit5Firstaid文章BasicFirstAid人教版必修五
- 2021北京昌平初二(上)期中数学(A)(教师版)
评论
0/150
提交评论