Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我如何才能删除“删除”;“今天”;DateTimePicker控件中的按钮(Windows窗体控件的)_C#_Winforms_Datetimepicker - Fatal编程技术网

C# 我如何才能删除“删除”;“今天”;DateTimePicker控件中的按钮(Windows窗体控件的)

C# 我如何才能删除“删除”;“今天”;DateTimePicker控件中的按钮(Windows窗体控件的),c#,winforms,datetimepicker,C#,Winforms,Datetimepicker,在DateTimePicker控件中,单击下拉按钮时,将显示一个日历。在日历的底部有一个按钮:“今天”,单击该按钮后,将当前日期设置为所选日期。 我想从控件中删除/隐藏该按钮。我该怎么做呢?我似乎记得不久前我自己想修改这个控件,但发现这是不可能的。解决方案是构建自己的自定义控件 如果有帮助的话,我确实找到了这个链接,它链接到一个定制的Winforms日历 本机Windows DateTimePicker控件支持DTM_SETMCSTYLE消息来设置月份日历的样式。创建控件并更改默认样式时,只需使

在DateTimePicker控件中,单击下拉按钮时,将显示一个日历。在日历的底部有一个按钮:“今天”,单击该按钮后,将当前日期设置为所选日期。
我想从控件中删除/隐藏该按钮。我该怎么做呢?

我似乎记得不久前我自己想修改这个控件,但发现这是不可能的。解决方案是构建自己的自定义控件


如果有帮助的话,我确实找到了这个链接,它链接到一个定制的Winforms日历

本机Windows DateTimePicker控件支持DTM_SETMCSTYLE消息来设置月份日历的样式。创建控件并更改默认样式时,只需使用一点pinvoke即可发送消息。向项目中添加一个新类并粘贴如下所示的代码。编译。将工具箱顶部的新控件放到窗体上,替换旧控件

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

class MyDateTimePicker : DateTimePicker {
    protected override void OnHandleCreated(EventArgs e) {
        int style = (int)SendMessage(this.Handle, DTM_GETMCSTYLE, IntPtr.Zero, IntPtr.Zero);
        style |= MCS_NOTODAY | MCS_NOTODAYCIRCLE;
        SendMessage(this.Handle, DTM_SETMCSTYLE, IntPtr.Zero, (IntPtr)style);
        base.OnHandleCreated(e);
    }
    //pinvoke:
    private const int DTM_FIRST = 0x1000;
    private const int DTM_SETMCSTYLE = DTM_FIRST + 11;
    private const int DTM_GETMCSTYLE = DTM_FIRST + 12;
    private const int MCS_NOTODAYCIRCLE = 0x0008;
    private const int MCS_NOTODAY = 0x0010;

    [DllImport("user32.dll")]
    private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
}
在运行时,在Windows 7上看起来是这样的:


在WPF中,这是可能的。在Winforms中我不确定。经过一些搜索之后,我认为在Winforms中不可能。在解决方案中,您继承了dateTimePicker控件,但是如何在不使用继承的情况下完成上述任务?对于上面的-无继承的事情。。。。我们只能使用:this.dtp1.handle//dtp1是dateTimePicker的对象。您的答案非常完美,适用于Windows 7,但不适用于Windows XP。你能告诉我它在windows XP中是如何工作的吗??