一个应用按钮控件的程序,包括按钮的创建,事件处理。
示例代码如下:(单击按钮时,会弹出一个消息提示框)
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);
如果对委托有什么不了解的话,可以参考:如流,新一代智能工作平台
看一个简单的关于事件的示例吧:
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);
}
获取组合框里所有项内容:
private void button1_Click(object sender, EventArgs e)
{
String str="";
for (int i = 0; i < comboBox1.Items.Count; i++)
{
str += comboBox1.Items[i].ToString();
str += "\n";
}
MessageBox.Show(str);
}
comboBox1.Items.Count存储项数量,Items下还有几个函数需要了解一下,comboBox1.Items.Clear()清除组框里所有的项,
RemoveAt和Remove删除指定的项,RemoveAt是根据项索引来指定删除的项,而Remove是根据项内容。
CheckBox复选框控件
CheckBox类里有一个bool类型变量Checked,用于判断是否选中选框。
示例代码:
String str="选中的是:\n";
if (checkBox1.Checked)
str += checkBox1.Text;
if (checkBox2.Checked)
{
str += "\n";
str += checkBox2.Text;
}
MessageBox.Show(str);
另外单选框RadioButton也一样,Checked属性为true则被选中。如果要进行分组的话,则把RadioButton添加到GroupBox控件里,为一组。groupBox.Controls属性成员可访问GroupBox控件里的所有RadioButton控件。方法后面会有介绍。
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