http://www.cnblogs.com/denylau/archive/2010/04/28/1723274.html
当我们在使用WinForm开发项目或者小工具的时候,很多时候需要做开窗事件,这个时候你会如何处理呢?
当然微软给我们提供了强大的日期控件,我们可以通过下拉选择来选择相应的日期,但是你会发现日期的格式不是我们所需要的,或者
我们希望得到的日期格式,并且呈现出来的效果也不是非常美观。在此我给大家演示一下,我在开发小工具中如何设置日期开窗事件的,
这是一个比较简单的日期开窗,下面开始喽!
首先创建一个项目,里面有两个Windows窗体,如下图所示:
第一个窗体时需要日期一个文本框一个Button一个图片资源,窗体二需要我们拖一个MonthCalendar控件,调整至合适的大小。
接下来我们需要做的就是在Button下面写事件喽:
private void button1_Click(object sender, EventArgs e)
{
string tDateTime = string.Empty;
NewOpenManager1.OpenWindow(ref tDateTime);//調用OpenWindow得到回傳的日期
if (tDateTime == null)
{
}
else
{
this.textBox1.Text = tDateTime;
}
}
在这个click事件中,需要我们注意的是NewOpenManager1.OpenWindow(ref tDateTime);这句Code,他的意思是说我们会调用NewOpenManager1类的OpenWindow方法,下面将这个类的方法体描述如下:
public abstract class NewOpenManager1
{
public static void OpenWindow(ref string tDateTime)
{
FrmDateTime frmDt = new FrmDateTime();
tDateTime = frmDt.GetNewWindowDateTime();
}
}
定义的这个抽象类的时候我们会实例化日期窗体,调用日期窗体中的GetNewWindowDateTime()方法来获取在日期窗体中点选的日期。
下面就来看下日期窗体中有那些代码吧!
首先呢,我们要定义一个日期属性如下
public string tDateTime
{
get;
set;
}
之后呢就是定义一个我们上面调用的方法GetNewWindowDateTime(),方法体的内容如下:
public string GetNewWindowDateTime()
{
switch (ShowDialog())
{
case DialogResult.OK:
return this.tDateTime;
default:
break;
}
return null;
}
这样我们就会得到所选日期,下面是对所选日期进行格式化出我们需要的日期格式,内容如下:
private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
String tDate = this.monthCalendar1.SelectionStart.ToString("yyyy-MM-dd");
this.tDateTime = tDate.Replace("-","/");
this.DialogResult = DialogResult.OK;
}
这里我将日期格式化为yyyy/MM/dd的格式,你可以根据自己需要来进行格式化,最后返回到窗体Form1中的TextBox中。显示的效果如下:
Ok了,这个小的日期开窗就完成喽,请各位参考吧,如果有更好的方法记得介绍给我,非常感谢!