C#程序设计(三)-----工具栏设计

工具栏设计

一、ToolBar控件

ToolBar控件称为工具栏,程序运行后工具栏可动态地显示在窗体的合适位置,供用户使用程序的功能。

1、创建工具栏

ToolBar控件拖入应用程序窗体的主菜单之下,可以看到主菜单下方增加了一个控件toolBar1,不过此时它只是一片空白,并没有任何工具按钮。

ImageList控件拖入应用程序窗体,可以看到应用程序窗体下部的架子上增加了一个控件imageList1。程序运行后imageList1控件并不显示,它的作用是为toolBar1控件的工具按钮提供图片。因此应立即将toolBar1控件的ImageList属性设置为imageList1

打开imageList1的属性窗口,单击Image属性后的 浏览按钮,启动Image集合编辑器,依次向编辑器中加入toolBar1工具栏的工具按钮所需要的图片(图片可以来自.ico文件或.bmp文件)。如下图:

打开toolBar1的属性窗口,单击Buttons属性后的 浏览按钮,启动ToolBarButton集合编辑器,依次向编辑器中加入toolBar1工具栏的工具按钮,设置每个按钮的NameImageIndexToolTipTextStyle属性赋值。如下图:

Button的常用属性有以下几个:

Name属性:工具按钮的名字。

ImageIndex属性:在imageList1控件中的图片索引号。

ToolTipText属性:当鼠标光标在按钮上停顿一段时间后显示的文字提示。

Style属性:按钮的类型。PushButton是常用的选择,按下即可弹起;ToggleButton是按下不弹起,再次单击时才弹起;Separator用于分隔两组按钮;DropDownButton是带有下拉,形如 的按钮,若选择这种形式,必须同时将它的DropDownMenu属性指定到某一个上下文菜单,以便单击 时能弹出上下文菜单。

工具栏toolBar1的各按钮Button的属性设置:

2、为工具栏指定停靠方式

可以设置工具栏的停靠位置,使其停靠在窗体的上边、左边、下边或右边。

toolBar1的属性窗口中将属性Dock设置为TopLeftBottomRightNone之一。如图:

3、为工具按钮的Click编写事件处理程序

工具栏上的所有按钮共享同一个Click事件,在这个事件处理程序中,需要用某种方法来区分用户是单击了哪个按钮。下段代码中是利用了每个按钮的Button.ToolTipTex属性来区分的。

工具栏每个按钮的功能,应该都有一个菜单项与之对应,当某个按钮被Click时,只要调用对应的菜单项的Click处理程序即可。

 

private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)

        {  

            switch(e.Button.ToolTipText)

            {  

                case "新建":mainMenuItemNew_Click(null,null);

                            break;

                case "打开":mainMenuItemOpen_Click(null,null);

                            break;

                case "保存":mainMenuItemSave_Click(null,null);

                            break;

                case "撤消":mainMenuItemUndo_Click(null,null);

                            break;

                case "剪切":mainMenuItemCut_Click(null,null);

                            break;

                case "复制":mainMenuItemCopy_Click(null,null);

                            break;

                case "粘贴":mainMenuItemPaste_Click(null,null);

                            break;

                case "删除":mainMenuItemDelete_Click(null,null);

                            break;

            }

       }

通用对话框设计,包括打开文件、保存文件、选择字体、选择颜色、设置页面和打印,对应的类名为OpenFileDialogSaveFileDialogFontDialogColorDialogPageSetupDialogPrintDialog

一、创建和显示通用对话框

要显示通用对话框,只需调用其ShowDialog()方法即可,例如:openFileDialog1.ShowDialog()就会将对话框openFileDialog1显示出来

二、设置和获取通用对话框的属性

1、通用对话框常用的属性如下表:

类型

作用

属性

OpenFileDialog

打开文件

FileName:选定的文件名和完整的路径

Filter:筛选特定后缀的文件

Multiselect:是否允许选择多个文件

SaveFileDialog

保存文件

FileName:指定的文件名和完整的路径

Filter:筛选特定后缀的文件

DefaultExt:设置或获取默认文件扩展名

OverwritePrompt:保存的文件名已存在时是否显示警告

FontDialog

设置字体

Font:选定的字体

Color:选定的字体颜色

ShowColor:十分显示颜色选择框

ColorDialog

设置颜色

Color:选定的颜色

AllowFullOpen:十分可以使用自定义颜色

PageSetupDialog

页面设置

Document:从中获取页面设置的PrintDocument

AllowMargins:是否显示边距部分

AllowOrientation:是否显示方向部分(横/纵向)

AllowPaper:是否显示纸张部分(纸张大小和来源)

AllowPrinter:是否显示“打印机”按钮

PrintDialog

打印设置

Document:获取或设置PrintDocument

AllowPrintToFile:是否显示“打印到文件”复选框

AllowSelection:是否显示页码范围选项按钮

AllowSomePage:是否显示“页”选项按钮

 

2、从对话框获取信息

用户通过对话框向应用程序提供信息,应用程序必须从通用对话框获取用户的信息。用户信息被保存在对话框的属性之中,应用程序只要去引用那些感兴趣的属性即可。

在应用程序中显示对话框,用户关闭对话框后,了解用户采取的操作是十分重要的,例如他是否单击了OK按钮或是Cancel按钮。操作信息被保存在DialogResult中,它可能的取值是OKCancelAbortRetryIgnoreYesNo(None)。请看下例:

ColorDialog ColorDlg=new ColorDialog();

        if(ColorDlg.ShowDialog()==DialogResult.OK)

            {  

                textBoxEdit.ForeColor=ColorDlg.Color;

       }

程序段首先创建一个颜色对话框实例,然后显示对话框,用户若是单击了OK按钮,就将文本框的前景色改为在颜色对话框中选定的颜色(隐含了用户若是单击了Cancel按钮,就不改变)。

3、设置对话框所有者

Form.ShowDialog方法有一个可选参数,即所有者,它用来确定窗口的父子关系。想要对话框出现在哪个窗口中,这个参数就应该是那个窗口。通常,希望对话框的所有者是创建和使用它的对象,这时该参数就是this,这样就会使对话框出现在窗体前面,这是正确的选择。上例不妨改为:

if(ColorDlg.ShowDialog(this)==DialogResult.OK)

    {  

        textBoxEdit.ForeColor=ColorDlg.Color;

}

三、使用消息框

1Show()方法的参数

Show(消息,标题,按钮形式,图标类型)

程序段:

MessageBox.Show("要保存正在编辑的文件否?","保存文件",      MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question);

显示的消息框如下:

2、枚举常量取值

枚举常量MessageBoxButtons用来确定消息框中按钮的个数和布局,以便应用程序收集用户的响应。MessageBoxButtons的取值如下:

MessageBoxButtons的取值

按钮

OK

确定(OK)  默认

OKCancel

确定(OK)、取消(Cancel)

YesNo

(Yes)、否(No)

YesNoCancel

(Yes)、否(No) 、取消(Cancel)

RetryCancel

重试(Retry)、取消(Cancel)

AbortRetryIgnore

终止(Abort)、重试(Retry)、忽略(Ignore)

 

枚举常量MessageBoxIcon用来确定消息框中图标的类型,以增加消息的表现力。MessageBoxIcon的取值如下:

MessageBoxIcon的取值

按钮

None

无图标    默认

Asterisk

包含小写i的圆圈

Error

包含白色×的红色圆圈

Exclamation

包含提示点的黄色三角形

Hand

包含白色×的红色圆圈

Information

包含小写i的圆圈

Question

包含问号标记的圆圈

Stop

包含白色×的红色圆圈

Waming

包含提示点的黄色三角形

private   void  mainMenuItemNew_Click( object  sender, System.EventArgs e)

        
{

            
if(textBoxEdit.Text!="")

            
{

        DialogResult result
=MessageBox.Show("要保存正在编辑的文件否?","保存文件",    MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question);

                
if(result==DialogResult.Yes)

{                               mainMenuItemSave_Click(null,null);

                    textBoxEdit.Clear();

                }


                
if(result==DialogResult.No)

                    textBoxEdit.Clear();

            }


        }


 

        
private   void  mainMenuItemOpen_Click( object  sender, System.EventArgs e)

        
{   

            
if(textBoxEdit.Text!="")

            
{

                DialogResult result
=MessageBox.Show("要保存正在编辑的文件否?","保存文件",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question);

                
if(result==DialogResult.Yes)

                    mainMenuItemSave_Click(
null,null);

            }


            OpenFileDialog OpenFileDlg
=new OpenFileDialog();

            OpenFileDlg.Filter
="文本文件(*.txt)|*.txt";

            OpenFileDlg.Multiselect
=false;

            
if(OpenFileDlg.ShowDialog()==DialogResult.OK)

            
{

                
try

                
{

                    
string fileName=OpenFileDlg.FileName;

                    FileInfo f
=new FileInfo(fileName);

                    StreamReader reader
=f.OpenText();

                    textBoxEdit.Text
=reader.ReadToEnd();

                    reader.Close();

                }


                
catch(Exception Exc)

                
{

                    MessageBox.Show(Exc.Message);

                }


            }


 

        }


 

        
private   void  mainMenuItemSave_Click( object  sender, System.EventArgs e)

        
{

            SaveFileDialog SaveFileDlg
=new SaveFileDialog();

            SaveFileDlg.Filter
="文本文件(*.txt)|*.txt";

            SaveFileDlg.CreatePrompt
=true;

            SaveFileDlg.AddExtension
=true;

            
if(SaveFileDlg.ShowDialog()==DialogResult.OK)

            
{

                
try

                
{

                    
string fileName=SaveFileDlg.FileName;

                    StreamWriter writer
=new StreamWriter(fileName);

                    writer.Write(textBoxEdit.Text);

                    writer.Close();

                }


                
catch(Exception Exc)

                
{

                    MessageBox.Show(Exc.Message);

                }


            }


            

       }


private   void  mainMenuItemFont_Click( object  sender, System.EventArgs e)

        
{

            FontDialog FontDlg
=new FontDialog();

            
//使字体对话框上显示颜色选择框

            FontDlg.ShowColor
=true;

            
if(FontDlg.ShowDialog()==DialogResult.OK)

            
{   

                textBoxEdit.Font
=FontDlg.Font;

                textBoxEdit.ForeColor
=FontDlg.Color;

            }


    }


    
private   void  mainMenuItemColor_Click( object  sender, System.EventArgs e)

        
{

            ColorDialog ColorDlg
=new ColorDialog();

            
if(ColorDlg.ShowDialog()==DialogResult.OK)

            
{   

                textBoxEdit.ForeColor
=ColorDlg.Color;

            }


        }
  private   void  mainMenuItemFont_Click( object  sender, System.EventArgs e)

        
{

            FontDialog FontDlg
=new FontDialog();

            FontDlg.ShowColor
=true;

            
if(FontDlg.ShowDialog()==DialogResult.OK)

            
{   

                textBoxEdit.Font
=FontDlg.Font;

                textBoxEdit.ForeColor
=FontDlg.Color;

            }


    }


    
private   void  mainMenuItemColor_Click( object  sender, System.EventArgs e)

        
{

            ColorDialog ColorDlg
=new ColorDialog();

            
if(ColorDlg.ShowDialog()==DialogResult.OK)

            
{   

                textBoxEdit.ForeColor
=ColorDlg.Color;

            }


        }

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值