带有嵌入式 MonthCalendar 问题的 UserControl

Posted

技术标签:

【中文标题】带有嵌入式 MonthCalendar 问题的 UserControl【英文标题】:UserControl with embedded MonthCalendar problems 【发布时间】:2013-12-04 15:05:00 【问题描述】:

我希望有人可以帮助我。我在 C# 中创建了一个用于 Winform 的用户控件。该控件包含各种控件,包括monthCalendar 控件,但是monthCalendar 控件是我的问题所在。

我希望包含我的用户控件的父窗体在触发用户控件中的 monthCalendar 的 dateSelected 事件时触发一段代码以使用 linq 查询数据库。这个想法是用户控件不应该知道事物的数据访问方面,以便用户控件可以在其他项目中使用。

我希望有一种方法可以让父表单可以使用 dateSelected 事件;我已经成功完成了其他控件的点击事件等我只是似乎无法为monthCalendar完成这项工作,因为DateSelected使用DateRangeEventHandler而不是标准EventHandler。

我希望这一点很清楚,因为我一直在这个街区周围,所以我不确定还有什么意义 :) 任何关于我如何进行编码的帮助或建议将不胜感激。

【问题讨论】:

为什么不在用户控件中创建一个方法然后你可以在父窗体中调用它 欢迎来到 SO!请编辑您的帖子以包含给您带来麻烦的相关代码 - 查看您所描述的内容将使我们能够更好地帮助您。 【参考方案1】:

与 Button 事件相同。

在您的 UserControl 中,它看起来像这样:

public event DateRangeEventHandler DateChanged 
  add  monthCalendar1.DateChanged += value; 
  remove  monthCalendar1.DateChanged -= value; 

然后在你的表单中,就像所有带有事件的控件一样:

userControl11.DateChanged += userControl11_DateChanged;

void userControl11_DateChanged(object sender, DateRangeEventArgs e) 
  // do something...

【讨论】:

嗨 Lars - 谢谢这成功了,我可以发誓我早点尝试过这个,但我想不是。 :) 感谢您的帮助。【参考方案2】:

您可以在您的UserControl 中公开MonthCalendar,然后在您的Form 中使用以下方式订阅该事件:

this.userControl.Monthcalender.DateSelected += new DateRangeEventHandler(Monthcalender_DateSelected)

或者您可以在UserControl 中创建一个新事件,该事件将在MonthCalendar.DataSelected 上引发。并在您的Form 中订阅该事件,例如:

用户控制:

 public UserControl1()
        
            InitializeComponent();                
            this.monthCalendar1.DateSelected += new DateRangeEventHandler(monthCalendar1_DateSelected);
        

        public void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
        
            OnSeChanged(e);
        

        public event DateRangeEventHandler SeChanged;

        protected virtual void OnSeChanged(DateRangeEventArgs e)
        
            if (SeChanged != null)
            
                SeChanged(this, e);
            
        

表格:

 userControl11.SeChanged += new DateRangeEventHandler(userControl11_SeChanged);

【讨论】:

以上是关于带有嵌入式 MonthCalendar 问题的 UserControl的主要内容,如果未能解决你的问题,请参考以下文章

.NET 中的 MonthCalendar - 扩展一个月

MonthCalendar.SelectionRange 数据绑定示例

MonthCalendar 颜色不变

MonthCalendar - 禁用天数

同步 MonthCalendar 和 Datetimepicker

C# MonthCalendar 控件获取光标下的日期