MenuItem_green.CheckState = CheckState.Indeterminate; cMenuItem_green.CheckState = CheckState.Indeterminate; MenuItem_blue.Checked = MenuItem_red.Checked = MenuItem_default.Checked = false; cMenuItem_blue.Checked = cMenuItem_red.Checked = cMenuItem_default.Checked = false; StatusLabel3.Text = \绿色\ } else { this.BackColor = Control.DefaultBackColor; MenuItem_default.CheckState = CheckState.Indeterminate; cMenuItem_default.CheckState = CheckState.Indeterminate; StatusLabel3.Text = \默认颜色\ } } private void MenuItem_blue_Click(object sender, EventArgs e) { MenuItem_blue.Checked = !MenuItem_blue.Checked; if (MenuItem_blue.Checked) { this.BackColor = Color.Blue; MenuItem_blue.CheckState = CheckState.Indeterminate; cMenuItem_blue.CheckState = CheckState.Indeterminate; MenuItem_red.Checked = MenuItem_green.Checked = MenuItem_default.Checked = false; cMenuItem_red.Checked = cMenuItem_green.Checked = cMenuItem_default.Checked = false; StatusLabel3.Text = \蓝色\ } else { this.BackColor = Control.DefaultBackColor; MenuItem_default.CheckState = CheckState.Indeterminate; cMenuItem_default.CheckState = CheckState.Indeterminate; StatusLabel3.Text = \默认颜色\ } } private void cMenuItem_green_Click(object sender, EventArgs e) { MenuItem_green_Click(sender, e); } private void cMenuItem_blue_Click(object sender, EventArgs e) { MenuItem_blue_Click(sender, e); } private void MenuItem_unTran_Click(object sender, EventArgs e) { this.TransparencyKey = this.BackColor; this.Opacity =1.0; } private void MenuItem_transl_Click(object sender, EventArgs e) { this.TransparencyKey = this.BackColor; this.Opacity =0.5; } private void tsBtn_big_Click(object sender, EventArgs e) { this.Width = 800; this.Height = 600; StatusLabel1.Text = \像素\ } private void tsBtn_middle_Click(object sender, EventArgs e) { this.Width = 600; this.Height = 480; StatusLabel1.Text = \像素\ } private void tsBtn_small_Click(object sender, EventArgs e) { this.Width = 400; this.Height = 360; StatusLabel1.Text = \像素\ } } } (4)通过从菜单中选择“生成”→“生成解决方案”,来生成该解决方案。
(5)通过从菜单中选择“调试” →“开始执行(不调试)”选项来执行此应用程序。
程序运行效果图
指导教师检查学生进度
练习2:创建一个单文档的文本编辑器应用程序
问题
请编写一个简单的单文档文本编辑器,一次只能打开一个文件,如果要打开另一个文件,必须关闭当前打开的文件,微软的写字板程序就是单文档字处理程序。 指导教师讲解问题说明
使用RichTextBox 可以建立一个文本编辑器,它和TextBox 的一些属性、事件和方法相同,其新增属性、事件和方法如下:
? ? ? ? ? ? ? ? ? ? ? ? ?
属性Dock:
属性SelectedText、 SelectionLength、SelectionStart: 属性SelectionFont: 属性SelectionColor: 属性Lines: 属性Modified: 事件SelectionChange: 事件TextChanged: 方法Clear():
方法Copy()、Cut()、Paste(): 方法SelectAll(): 方法Find():
方法SaveFile()和LoadFile():
? ?
分析
方法Undo(): 方法Redo():
指导教师分析解题思路
该问题需要开发一个窗体,要求对用户的简历信息进行登记。该应用程序主要用到按钮、文本输入框、图片显示框、下拉列表框和列表框等控件。 推荐步骤:
(1)新建一个名为“TxtEditor”的基于Windows应用程序的项目。
(2)剪贴板功能:放RichTextBox控件到窗体。属性Name=richTextBox1,Dock=Fill,Text=\。 添加相应的菜单项,各菜单项的事件处理函数如下:
private void menuItemEditCut_Click(object sender, EventArgs e) { richTextBox1.Cut(); //剪切 } private void menuItemEditCopy_Click(object sender, EventArgs e) { richTextBox1.Copy(); //拷贝 } private void menuItemEditPaste_Click(object sender, EventArgs e) { richTextBox1.Paste(); //粘贴 } private void menuItemEditUndo_Click(object sender, EventArgs e) { richTextBox1.Undo(); //撤销 } private void menuItemEditRedo_Click(object sender, EventArgs e) { richTextBox1.Redo(); //恢复 } (3)文本编辑器都应具有文件存取功能,菜单顶级菜单项“文件”的弹出菜单中一般包括如下菜单项:新建、打开、关闭、保存和另存为等。
把OpenFileDialog和SaveFileDialog控件放到窗体中。为菜单增加顶级菜单项:文件,为其弹出菜单增加菜单项:新建、menuItemFileSave、menuItemFileSaveAs、menuItemFileExit。
为Form1类中定义变量:string s_FileName=\,记录当前编辑的文件名。
private void menuItemFileNew_Click(object sender, EventArgs e) { if (!IfSaveOldFile())//如果返回false,本次操作取消 打开...、保存...、另存为...、退出。修改这些菜单项的Name属性分别为:mainMenuFile、menuItemFileNew、menuItemFileOpen、
return; richTextBox1.Text = \或richTextBox1.Clear(); s_FileName = \新建文件没有文件名。 } private void menuItemFileOpen_Click(object sender, EventArgs e) { if (!IfSaveOldFile())//如果返回false,本次操作取消 return; if (openFileDialog1.ShowDialog() == DialogResult.OK) { s_FileName = openFileDialog1.FileName; richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText); } } private void menuItemFileSaveAs_Click(object sender, EventArgs e) { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { s_FileName = saveFileDialog1.FileName; richTextBox1.SaveFile saveFileDialog1.FileName,RichTextBoxStreamType.PlainText); bSave = false; } //注意存取文件类型应一致。 } private void menuItemFileSave_Click(object sender, EventArgs e) { if (s_FileName.Length != 0) { bSave = false; richTextBox1.SaveFile(s_FileName, RichTextBoxStreamType.PlainText); } else menuItemFileSaveAs_Click(sender, e); //调用另存为菜单项事件处理函数 } private void menuItemFileExit_Click(object sender, EventArgs e) { Close(); } (4) 修改字体
为修改使用的字体,可打开字体对话框FontDialog,选择指定字体。可以按两种方式修改字体,如果未选中文本,表示以后键入的字符将按选定字体输入。如果选中文本,则仅修改选定文本的字体。修改字符颜色也根据同样原则。
放FontDialog控件到窗体,属性Name=fontDialog1。为菜单增加顶级菜单项:格式,属性Name为mainMenuModel,为其弹出菜