C#窗口编程(二)

一个应用按钮控件的程序,包括按钮的创建,事件处理。

示例代码如下:(单击按钮时,会弹出一个消息提示框)

using System.Windows.Forms;
using System;
class Form1 : Form
{
    private Button button1;//定义一个按钮变量button1
    public Form1()
    {
        InitializeComponent();
    }
    public void InitializeComponent()
    {
        //设置窗口属性
        this.Text = "这是我的窗口";//窗口名称
        this.Size= new System.Drawing.Size(500,450);//窗口的大小,宽500,高450
        this.MaximizeBox=false;//禁用窗口最大化按钮
        this.BackColor = System.Drawing.Color.FromArgb(192, 255, 192);//窗口背景色
        this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;//窗口初始位置,屏幕中间

        //创建按钮
        button1 = new Button();
        button1.Text = "确定";//按钮名称
        button1.Location = new System.Drawing.Point(this.Size.Width - 80, 10);//按钮在窗口里的位置
        button1.Size = new System.Drawing.Size(60, 30);//按钮宽高
        button1.Click+=new EventHandler(button1_Click);//关联按钮和事件处理函数

        //使用视觉样式,按钮背景色不会随窗口背景色改变而改变,使用自己的视觉样式背景
        //也就是,应用程序启用了可视样式EnableVisualStyles,这个值有效。
        button1.UseVisualStyleBackColor = true;

        //添加按钮到窗口(关联)
        this.Controls.Add(button1);
    
    }

    //按钮单击事件处理函数
    private void button1_Click(object sender, EventArgs e)
    {
        //简单的消息提示
        MessageBox.Show("你单击了这个按钮!");
    }

}

class Program
{
    static void Main()
    {
        //启用可视样式,意思是控件样式,根据桌面主题改变而改变,不然就是经典控件样式
        Application.EnableVisualStyles();
        Application.Run(new Form1());//new 派生类Form1对象
    }
}

 

Form类代表窗口,那么Button就是按钮类。其它我就不讲了,只说一下事件处理是怎么回事。

看这一句:button1.Click+=new EventHandler(button1_Click);

Click是Button类里的一个委托变量,这个委托的定义是这样的:

public delegate void EventHandler(object sender, EventArgs e);

如果对委托有什么不了解的话,可以参考:http://hi.baidu.com/3582077/blog/item/bd81b61f06528015304e15b3.html

看一个简单的关于事件的示例吧:

public delegate void EventHandler(object sender,EventArgs e);
public class Button
{
    public event EventHandler Click;

    protected void OnClick(EventArgs e)
    {
        if (Click != null) Click(this, e);
    }
}

上面的Click(this,e);第一个参数传的是this,它对应的是object,这个是所有类的基类,如果你自定义类的时候,没有从哪个类派生,那么默认就是从object派生出的类。那么关于事件处理函数:void button1_Click(object sender, EventArgs e)
第一个参数是有得解释了,它可以转换为Button类型。看下面代码:

 void button1_Click(object sender,EventArgs e)

{

       Button btn=(Button)sender;
        String str = "你单击的按钮名称是:";
        str+=btn.Text;
        MessageBox.Show(str);

}

这样就可以根据sender来判断具体是哪个控件的事件了

事件定义的委托,变量前有一个event关键字,这个是事件的标志,Click变量前也有,用event修饰后,Click不能直接赋值,只能用+=进行赋值。这个用法具体可以参考C#语法相关(三)里面的多播委托。

 

好了,这些基础都有个大概的了解了,接下来就学习各控件的基本应用吧,上面的例子中代码都是手打的。这次,我们建一个“Windows 窗体应用程序”,一些繁杂的代码就让编译器帮我们生成吧。

组合框

新建一个项目,项目类型是“Windows 窗体应用程序”,确定后进入窗口编辑区,往窗口里拖一个组合框控件(Name:comboBox1),

然后再拖一个按钮控件。

在InitializeComponent函数中给组合框添加项文本:

comboBox1.Items.Add("1111111");

comboBox1.Items.Add("2222222");

comboBox1.Items.Add("3333333");

comboBox1.Items.Add("4444444");

然后双击“按钮”控件,添加单击事件处理,代码如下:

  private void button1_Click(object sender, EventArgs e)
   {
    //comboBox1.Text存储有当前选择的项文本
    MessageBox.Show(comboBox1.Text);
   }

 

CheckBox复选框控件
CheckBox类里有一个bool类型变量Checked,用于判断是否选中选框。
示例代码:
 String str="选中的是:\n";
 if (checkBox1.Checked)
   str += checkBox1.Text;
 if (checkBox2.Checked)
   {
     str += "\n";
     str += checkBox2.Text;
   }
 MessageBox.Show(str);

 

 TextBox文本框和PictureBox图片控件,加OpenFileDialog文件打开对话框

 这里做一个简单的打开图片的应用程序,用PictureBox控件显示图片,OpenFileDialog对话框来浏览图片,
TextBox里显示选择的图片路径。
PictureBox类里有个属性变量Image,类型是System.Drawing.Image,这个变量决定要PictureBox控件要显示的图片,类似于C++的“句柄”。

Image类里有个FromFile函数,可以加载磁盘上的图片文件。

还是直接看代码吧,每一句关键代码都有了注释。

先给窗口添加TextBox,PictureBox,Button控件。其中Button按钮单击事件处理函数的代码是:

 private void button1_Click_1(object sender, EventArgs e)
        {
            OpenFileDialog openFlg = new OpenFileDialog();
            //文件类型过滤,就是允许打开哪些类型文件,格式跟MFC对话框一样
            openFlg.Filter = "JPG图片|*.jpg|BMP位图|*.bmp";
           
            //如果按下了打开文件对话框里的确定按钮
            if (openFlg.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = openFlg.FileName;//获取路径,在文本框上显示路径
                //加载图片到PictureBox控件
                pictureBox1.Image = Image.FromFile(openFlg.FileName);
            }
        }

OpenFileDialog对话框类要想有更进一步的了解的话,可以去MSDN查一下,这里不说明了,好了,我只讲关键部分,其它一些收尾工作,自己来做吧。

程序运行图:

另:PictureBox类里有个SizeMode属性变量,这个指定图片显示模式,通常情况下,当图片大小超过了控件时,就不会显示出来。

如果把SizeMode指定值为StretchImage,就可以放大,缩小图片,反正是跟控件大小一致。

也就是this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;

PictureBoxSizeMode是一个枚举类型,详情参考MSDN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值