来访人员登记系统(十一)自定义消息提示框MessageBox
前置模块
本文在签到模块中换用了自定义的消息提示框,效果如下图:
实现思路
具体实现方法是创建一个新的窗体,然后加两个PictureBox,设置背景图片为一个透明的png文件,用以表示未找到图片的样式,右侧放一个panel,里面加几个label和button,窗体设计到这里就大致完成了,可以再调一些细节上的属性。
在窗体实现方法里面传递一些要显示的参数,这里我是用多个string来传递的,用PictureBox的Load方法加载图片,将信息显示在右边panel中的label里,再设置button_OK的DialogResult为OK,在两个button的点击事件中将窗体关闭,资源释放。
C#窗体代码
public Form_MessageBox(string name,
string company,
string idcard,
string phone,
string staff,
string ETA,
string date,
string relevants,
string intention)
{
InitializeComponent();
label_login_user_name.Text = Form_Login.login_user_name;
string[] filename = Directory.GetFiles(Form_Main.image_directory, idcard + "*", SearchOption.AllDirectories);
if (filename.Length == 2)
{
string filename1 = filename[0];
string filename2 = filename[1];
pictureBox_a.Load(filename1);
pictureBox_b.Load(filename2);
}
label_info.Text = "姓名:" + name + "\n\n" +
"单位:" + company + "\n\n" +
"身份证号:" + idcard + "\n\n" +
"电话:" + phone + "\n\n" +
"对接人员:" + staff + "\n\n" +
"预约时间:" + ETA + "\n\n" +
"预约日期:" + date + "\n\n" +
"涉及设备/系统:" + relevants + "\n\n" +
"来访目的:" + intention ;
}
private void button_OK_Click(object sender, EventArgs e)
{
Close();
}
private void button_cancel_Click(object sender, EventArgs e)
{
Close();
}
private void Form_MessageBox_FormClosing(object sender, FormClosingEventArgs e)
{
Dispose();
}
总结
本文实现的是一个非常简单的自定义消息提示框,没有从样式上进行更新,只是增加了显示图片的功能;
要实现图片大小适应PictureBox的大小,可以分别设置SizeMode和BackgroundImageLayout属性值为StretchImage和Stretch;
在窗体关闭时,要调用Dispose()方法释放占用的资源,否则将出现资源访问冲突。