免费预览已结束,剩余27页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 C#用户界面、菜单、工具栏1.1 目的了解C#可视化界面设计。1.2 练习之一:建立第一个C#对话框程序1、打开Visual studio,新建一个项目。2、填写项目名称及存放路径:3、得到如下初步结果,解决方案“exc1”下有一个工程“exc1”,并有对话框Form1。可在代码视图中查看对话框代码。4、该项目有一个“program.cs”文件,该文件如下:namespace exc1 static class Program / / 应用程序的主入口点。 / STAThread static void Main() Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1(); 这是程序的入口函数,以刚才所说的Form1对话框为启动主界面。可以改动对话框Form1的名称,我们也可以使用另外一个对话框作为启动主界面。程序运行如下,界面中还没有任何东西:1.3 练习之二:给对话框程序加菜单、按钮等1、先对我们的主对话框重命名,Form1更名为FrmMain,如右下图所示。 2、添加按钮,在左边按钮工具面板上选中需要的按钮放到对话框中来。3、首先我们添加一个MenuStrip进来,如下所示。把MenuStrip空间改名为:menuMain,我们可在menuMain,上继续添加菜单项。4、给Menu添加一个“文件”菜单子项,然后添加工具条ToolStrip,并增加两个工具条按钮,效果如下:1.4 练习之三:利用SplitterContainer控件对主界面进行划分 1、添加splitContainer1,并把它的orientation属性设为” Horizontal”,如下图所示。2、在上图的panel1上再添加一个SplitterContainer,并把它的orientation属性设为”Vertical”,如下图所示。如此我们可以轻松把主界面分为三个部分。大家可自行体会其运行效果。1.5 练习之四:对话框按钮消息响应函数添加textBox1、textBox2、textBox3和一个Button按钮。双击该Button为它添加消息处理函数如下: private void button1_Click(object sender, EventArgs e) Double result = Double.Parse(textBox1.Text) +Double.Parse(textBox2.Text); textBox3.Text = result.ToString(); 在InitializeComponent()函数中,可以找到如下代码:this.button1.Click += new System.EventHandler(this.button1_Click);在看Click属性的定义,public event EventHandler Click;以及EventHandler的定义,public delegate void EventHandler(object sender, EventArgs e);我们可知,在C#中使用了delegate实现了消息处理。本练习实现了实数的加法运算。同学们可以为菜单按钮添加相应的消息处理函数,实现类似的功能。1.6 练习之五:使用ListView控件 1、在上图的panel2上添加一个ListView控件(listView1),并把View属性设置为Details,把Dock属性设为Fill, 并添加Button2、Button3,用以对ListView显示进行控制。其效果如下。添加button2和button3的消息响应函数如下:private void button2_Click(object sender, EventArgs e) System.Windows.Forms.ColumnHeader columnHeader1; System.Windows.Forms.ColumnHeader columnHeader2; System.Windows.Forms.ColumnHeader columnHeader3; System.Windows.Forms.ColumnHeader columnHeader4; System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string 11222, 1111, 2222, 33333, -1); System.Windows.Forms.ListViewItem listViewItem2 = new System.Windows.Forms.ListViewItem(new string 212, 111, 222, -1); columnHeader1 = new System.Windows.Forms.ColumnHeader(); columnHeader2 = new System.Windows.Forms.ColumnHeader(); columnHeader3 = new System.Windows.Forms.ColumnHeader(); columnHeader4 = new System.Windows.Forms.ColumnHeader(); columnHeader1.Text = 名称; columnHeader1.Width = 80; columnHeader2.Text = 高程; columnHeader2.Width = 100; columnHeader3.Text = 类型; columnHeader3.Width = 100; columnHeader4.Text = 管理单位; columnHeader4.Width = 100; this.listView1.CheckBoxes = true; this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader columnHeader1, columnHeader2, columnHeader3, columnHeader4); this.listView1.Items.AddRange(new System.Windows.Forms.ListViewItem listViewItem1, listViewItem2); listView1.Refresh(); private void button3_Click(object sender, EventArgs e) listView1.Items.Clear(); listView1.Columns.Clear(); 运行效果如下:请同学们发挥自己的想象力,用ListView展示你需要展示的数据。1.7 练习之六:连接数据库并把数据结果展示于ListView对练习之五进行修改,即复制exc2文件夹exc3并把里面的exc2改为exc3,以作区别。找到两张16*16的图片,用来作为工具条按钮图片,放在exc3文件夹下的img文件夹。下图是为工具条上的按钮设置图片。步骤如下:选中要设置的工具条按钮;选中其image属性;在弹出的对话框中定位到相应图片,选择。这里我们选择5.gif文件。双击第一个工具条按钮,vs2005自动为它加入如下消息处理函数: private void toolStripButton1_Click(object sender, EventArgs e) 要访问数据库,我们必须在exc3工程的引用中加入System.Data库,如下图所示,选中System.Data后确定。之后在FrmMain.cs文件加入using System.Data;using System.Data.OleDb;随后把按钮消息响应函数改动如下: private void toolStripButton1_Click(object sender, EventArgs e) / 添加列表头 this.listView1.Items.Clear(); this.listView1.Columns.Clear(); System.Windows.Forms.ColumnHeader columnHeader1 = new System.Windows.Forms.ColumnHeader(); System.Windows.Forms.ColumnHeader columnHeader2 = new System.Windows.Forms.ColumnHeader(); System.Windows.Forms.ColumnHeader columnHeader3 = new System.Windows.Forms.ColumnHeader(); columnHeader1.Text = OBJECTID; columnHeader1.Width = 80; columnHeader2.Text = 行政区代码; columnHeader2.Width = 100; columnHeader3.Text = 行政区名称; columnHeader3.Width = 100; this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader columnHeader1, columnHeader2, columnHeader3); /连接导数据库 string database = Application.StartupPath + .excdatatestdata.mdb; string strConn = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= + database + ;Persist Security Info=False;Jet OLEDB:Database Locking Mode = 1; OleDbConnection cnn = new OleDbConnection(); cnn.ConnectionString = strConn; cnn.Open(); string sql = select OBJECTID,XZQDM,XZQM from DJ_POLYGON_JD; OleDbCommand cmd = new OleDbCommand(); /OleDbDataAdapter adapter = new OleDbDataAdapter(); cmd.Connection = cnn; cmd.CommandText = sql; OleDbDataReader reader = cmd.ExecuteReader(); while (reader.Read() string objectid = reader.GetValue(0).ToString(); string XZQDM = reader.GetValue(1).ToString(); string XZQM = reader.GetValue(2).ToString(); System.Windows.Forms.ListViewItem listViewItem = new System.Windows.Forms.ListViewItem(new stringobjectid,XZQDM,XZQM ); listView1.Items.Add(listViewItem); cnn.Close(); 点击,程序运行效果如下:同学们可以查阅相关资料,自己考虑实现数据删除、更新等操作。2 GDI+绘图 2.1 目的了解基于C#的GDI Plus编程。2.2 练习之一:建立第一个GDI Plus程序1、按照第一章的练习1,建立一个C#对话框程序。2、添加一个按钮,并为之消息响应函数如下:private void button1_Click(object sender, EventArgs e) Font fnt = new Font(Tahoma, 20, FontStyle.Bold | FontStyle.Italic);/创建字体 Graphics g = this.CreateGraphics();/创建Graphics对象 g.DrawString(GDI+编程世界, fnt, new SolidBrush(Color.Blue), 14, 10);/输出文字 点击按钮则可以见到效果如下:2.3 练习之二:使用线性坡度画刷1,对上个例子的代码,在对话框类代码文件中添加如下:using System.Drawing.Drawing2D; 2、把button1的消息响应函数修改如下:private void button1_Click(object sender, EventArgs e) Graphics g=this.CreateGraphics();/生成图形对象LinearGradientBrush MyBrush =new LinearGradientBrush( new Point(0,20),new Point(20,0),Color.Yellow ,Color.Blue);/生成渐变画刷g.FillRectangle(MyBrush,0,0,200,100);/填充矩形2.4 练习之三:绘制直线把上例代码改成如下: private void button1_Click(object sender, EventArgs e) Graphics g=this.CreateGraphics();/生成图形对象 Pen Mypen = new Pen(Color.Blue, 5);/生成画笔,蓝色,5个像素 g.DrawLine(Mypen, 1, 1, 30, 30);/画线 Point pt1 = new Point(1, 30); /生成起点 Point pt2 = new Point(30, 1); /生成终点 g.DrawLine(Mypen, pt1, pt2); /画线 2.5 练习之四:绘制椭圆private void button1_Click(object sender, EventArgs e) Graphics g = this.CreateGraphics();/生成图形对象 Pen Mypen = new Pen(Color.Blue, 5);/生成画笔,蓝色,5个像素 g.DrawEllipse(Mypen, 1, 1, 80, 40);/画椭圆 Rectangle rect = new Rectangle(85, 1, 165, 40);/生成矩形 g.DrawEllipse(Mypen, rect);/画椭圆2.6 练习之五:绘制曲线private void button1_Click(object sender, EventArgs e) Graphics g = this.CreateGraphics();/生成图形对象 Pen Mypen = new Pen(Color.Blue, 5);/生成画笔,蓝色,5个像素 g.DrawArc(Mypen, 1, 1, 80, 40, 90, 270);/ Rectangle rect = new Rectangle(85, 1, 165, 40);/生成起点 g.DrawArc(Mypen, rect, 0, 90);/画弧线2.7 练习之六:绘制扇形private void button1_Click(object sender, EventArgs e) Graphics g = this.CreateGraphics();/生成图形对象 Pen Mypen = new Pen(Color.Blue, 5);/生成画笔,蓝色,5个像素 g.DrawPie(Mypen, 1, 1, 80, 40, 90, 270);/画扇形 Rectangle rect = new Rectangle(85, 1, 165, 40);/生成矩形 g.DrawPie(Mypen, rect, 0, 90);/画扇形2.8 练习之七:使用GDI Plus请看如下程序运行效果,本练习要求学会使用GDI+函数绘制矩形和椭圆:按照练习一新建一个对话框应用程序。为该对话框类添加如下成员:private Point rectangleTopLeft = new Point(0, 0);private Size rectangleSize = new Size(200,200);private Point ellipseTopLeft = new Point(50, 200);private Size ellipseSize = new Size(200, 150);private Pen bluePen = new Pen(Color.Blue, 3);private Pen redPen = new Pen(Color.Red, 2);protected override void OnPaint( PaintEventArgs e )base.OnPaint(e);Graphics dc = e.Graphics;Size scrollOffset = new Size(this.AutoScrollPosition);if (e.ClipRectangle.Top+scrollOffset.Width 350 | e.ClipRectangle.Left+scrollOffset.Height “类”。弹出对话框如下,我们选择 “Base Tool”,开始创建我们的第一个工具。把工具类的名称改为:TrackRectanglePanToolClass,当然你可以改为一个更为动听的名字,然后选择“添加”。我们作如上图所示的选择,这个工具将可以对MapControl和PageLayoutControl控件有效。然后选择“OK”。VS2005为我们添加了这个类,并把一些用到的类库引用进来,参看右边的“引用”。在此文件的开头部分添加:using ESRI.ArcGIS.Carto;如下图所示,添加ESRI.ArcGIS.Geometry、ESRI.ArcGIS.Display两个类库,因为我们后面的代码用到它们。把TrackRectanglePanToolClass类的构造函数做适当修改,注意如下几句代码: base.m_category = 自定义工具; /localizable text base.m_caption = TrackExtent; /localizable text base.m_name = TrackExtent; /unique id, non-localizable 其作用是为我们的工具定义类别和名称。接下来为类TrackRectanglePanToolClass添加数据成员: private IMapControl2 m_pMapControl;用来访问从界面程序中传入的MapControl控件,是一个接口。 public override void OnCreate(object hook) if (m_hookHelper = null) m_hookHelper = new HookHelperClass(); m_hookHelper.Hook = hook;IToolbarControl2 control = hook as IToolbarControl2; m_pMapControl = control.Buddy as IMapControl2; / TODO: Add TrackRectanglePanToolClass.OnCreate implementation 在OnCreate函数中我们添加如红底所示的代码,把主程序中的MapControl控件传了进来。在OnMouseDown函数中添加如下代码。 public override void OnMouseDown(int Button, int Shift, int X, int Y) / TODO: Add TrackRectanglePanToolClass.OnMouseDown implementation m_pMapControl.MousePointer = esriControlsMousePointer.esriPointerCrosshair; m_pMapControl.Extent = m_pMapControl.TrackRectangle(); m_pMapControl.Refresh(esriViewDrawPhase.esriViewGeograp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 论文的标准格式及写作规范讲解
- 医学论文写作心得体会
- 毕业设计字体要求
- G省SY银行“大零售”业务市场营销策略研究(MBA毕业论文提纲)
- 天麻改善睡眠功能的实验研究
- MBA毕业论文答辩应注意的问题2
- 35kV电抗器故障原因分析及处理
- 论文导师评语范文
- 数控机床可靠性现状及其改善对策研究
- 会计毕业论文题目参考专题-论文格式-
- 顶管测量专项方案
- 山西润恒化工有限公司新建10万吨己二腈项目环评报告
- GB/T 528-1998硫化橡胶或热塑性橡胶拉伸应力应变性能的测定
- GB/T 14691-1993技术制图字体
- GA 838-2009小型民用爆炸物品储存库安全规范
- 高考作文论证方法之对比论证的运用-课件
- 大会-冠脉微循环障碍课件
- 国考行测真题及解析
- 中国女排(精选)课件
- 废气处理专业设备酸雾净化塔技术方案书
- 无利息借条最新的范本(标准版)
评论
0/150
提交评论