DevExpress——PopupContainer的灵活使用方案

项目中有这样一个需求,即就是页面上已经布局好了,但突然需要加一点东西,且不能影响整体的布局,那怎么解决呢?建议您考虑使用PopupContainerEdit控件,具体需求如下:

DevExpress——PopupContainer的灵活使用方案_第1张图片

需求实现:

  • 新建一个form页面,然后在页面上拖拽一个CheckEdit、PopupContainerEdit、PopupContainerControl控件,在PopupContainerControl面板上添加选择日期的控件DateEdit,添加了两个按钮SimpleButton。效果如下图所示:

DevExpress——PopupContainer的灵活使用方案_第2张图片

  • 设置PopupContainerEdit的两个属性,一个PopupControl属性选择PopupContainerControl,设置Visiable属性为false。
  • 设置CheckBox的选择事件,代码写为:
private void CheckEdit1_CheckStateChanged(object sender, EventArgs e)
{
    if (this.checkEdit1.CheckState == CheckState.Checked)
    {
        this.popupContainerEdit1.Visible = true;
        return;
    }
    this.popupContainerEdit1.Visible = false;
}
  • 设置PopupContainerEdit的点击事件,更新日期的选择格式
void popupContainerEdit1_Click(object sender, EventArgs e)
{
   this.dateEdit_start.Visible = true;
   this.dateEdit_start.Properties.ShowToday = false;
   this.dateEdit_start.Properties.ShowMonthHeaders = false;
   this.dateEdit_start.Properties.VistaCalendarInitialViewStyle = DevExpress.XtraEditors.VistaCalendarInitialViewStyle.YearView;
   this.dateEdit_start.Properties.VistaCalendarViewStyle = DevExpress.XtraEditors.VistaCalendarViewStyle.YearView;
   this.dateEdit_start.Properties.Mask.EditMask = "yyyy/MM/dd";
   this.dateEdit_start.Properties.Mask.UseMaskAsDisplayFormat = true;

   this.dateEdit_end.Visible = true;
   this.dateEdit_end.Properties.ShowToday = false;
   this.dateEdit_end.Properties.ShowMonthHeaders = false;
   this.dateEdit_end.Properties.VistaCalendarInitialViewStyle = DevExpress.XtraEditors.VistaCalendarInitialViewStyle.YearView;
   this.dateEdit_end.Properties.VistaCalendarViewStyle = DevExpress.XtraEditors.VistaCalendarViewStyle.YearView;
   this.dateEdit_end.Properties.Mask.EditMask = "yyyy/MM/dd";
   this.dateEdit_end.Properties.Mask.UseMaskAsDisplayFormat = true;
}
  • 点击确定事件,拿到选择的日期值进行之后的计算。最终在项目中的效果如下图所示:

DevExpress——PopupContainer的灵活使用方案_第3张图片

都看到这了,留个一键三连支持一下呗!

怎么找到我?微信公众号:技术上的那点事,工作微信:wsynnh323,我们一起交流学习进步。

你可能感兴趣的:(Devexpress,C#)