gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:34:06 28 4
gpt4 key购买 nike

有没有办法获取 MonthCalendar 控件上光标下的日期?我想在右键单击时收集它以传递到对话框中。右键单击似乎不会触发它的单击事件。我尝试过重载 MouseDown 事件,但这似乎也无济于事。

最佳答案

是的,MonthCalendar 有自己的上下文菜单,因此右键单击事件被禁用。需要手术才能重新启用它。向您的项目添加一个新类并粘贴如下所示的代码。编译。将工具箱顶部的新控件拖放到窗体上。

using System;
using System.Drawing;
using System.Windows.Forms;

class MyCalendar : MonthCalendar {
public event MouseEventHandler RightClick;

protected override void WndProc(ref Message m) {
if (m.Msg == 0x205) { // Trap WM_RBUTTONUP
var handler = RightClick;
if (handler != null) {
var pos = new Point(m.LParam.ToInt32());
var me = new MouseEventArgs((MouseButtons)m.WParam.ToInt32(), 1, pos.x, pos.y, 0);
handler(this, me);
}
this.Capture = false;
return;
}
base.WndProc(ref m);
}
}

您现在有一个可以订阅的 RightClick 事件。类似这样的东西:

    private void myCalendar1_RightClick(object sender, MouseEventArgs e) {
var hit = myCalendar1.HitTest(e.Location);
if (hit.HitArea == MonthCalendar.HitArea.Date) {
var dt = hit.Time;
MessageBox.Show(dt.ToString()); // Display your context menu here
}
}

关于C# MonthCalendar控件获取光标下的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7990182/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com