在DateTimePicker中添加周次

usxue 2008-10-16 04:11:48
在DateTimePicker中添加周次,要求如下:

1. 当DropDown事件发生时,周次要显示在日期的左边,并且周次的最上面显示“周次”(与“星期日”水平对齐)
2. 周次要从某个日期算起,假设就从MinDate算起。
3. 在日期的下方要显示Value和当前日期的周次和日期。

效果可以参考:


急啊!!!
...全文
720 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
usxue 2008-10-20
  • 打赏
  • 举报
回复
高手哪里去了?
shuiguozheng 2008-10-18
  • 打赏
  • 举报
回复
a
qshzf 2008-10-18
  • 打赏
  • 举报
回复
还是研究下算法吧
wuyi8808 2008-10-17
  • 打赏
  • 举报
回复
关注。
starts_2000 2008-10-17
  • 打赏
  • 举报
回复
Mark
soranoawa 2008-10-17
  • 打赏
  • 举报
回复
mark
mjjzg 2008-10-17
  • 打赏
  • 举报
回复
做自定义控件吧
帮顶
zhujiechang 2008-10-17
  • 打赏
  • 举报
回复
一般这种需求都自定义比较好
优途科技 2008-10-17
  • 打赏
  • 举报
回复
自己写的?
高手、、、
hyblusea 2008-10-17
  • 打赏
  • 举报
回复
自己做一个日历控件吧.....比重绘要容易一些...........
Annie_Cai 2008-10-17
  • 打赏
  • 举报
回复
好难的问题啊,不会。
留个脚印。。。
gengchengxiang 2008-10-17
  • 打赏
  • 举报
回复
buhui
usxue 2008-10-17
  • 打赏
  • 举报
回复
谢谢这位wartim英雄,除了你所说的方法外,真的没有别的方法了吗?
急啊!
wartim 2008-10-17
  • 打赏
  • 举报
回复
自己做个控件,放上月历控件和panel什么的自己组合绘画把
c#自带的月历控件的源代码里说明了
/// <include file='doc\MonthCalendar.uex' path='docs/doc[@for="MonthCalendar"]/*' />
/// <devdoc>
/// This control is an encapsulateion of the Windows month calendar control.
/// A month calendar control implements a calendar-like user interface, that
/// provides the user with a very intuitive and recognizable method of entering
/// or selecting a date.
/// Users can also select which days bold. The most efficient way to add the

MonthCalendar 只不过是windows自带的月历控件的封装(ps:源代码里居然有错别字。。。encapsulateion -> encapsulation)
不是重新做的,有绘制方法什么的,所以效果并不是都能满足

看这段
/// <include file='doc\MonthCalendar.uex' path='docs/doc[@for="MonthCalendar.CreateParams"]/*' />
/// <devdoc>
/// This is called when creating a window. Inheriting classes can ovveride
/// this to add extra functionality, but should not forget to first call
/// base.getCreateParams() to make sure the control continues to work
/// correctly.
/// </devdoc>
protected override CreateParams CreateParams {
[SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)]
get {
CreateParams cp = base.CreateParams;
cp.ClassName = NativeMethods.WC_MONTHCAL;
cp.Style |= NativeMethods.MCS_MULTISELECT | NativeMethods.MCS_DAYSTATE;
if (!showToday) cp.Style |= NativeMethods.MCS_NOTODAY;
if (!showTodayCircle) cp.Style |= NativeMethods.MCS_NOTODAYCIRCLE;
if (showWeekNumbers) cp.Style |= NativeMethods.MCS_WEEKNUMBERS;
if (RightToLeft == RightToLeft.Yes && RightToLeftLayout == true) {
//We want to turn on mirroring for Form explicitly.
cp.ExStyle |= NativeMethods.WS_EX_LAYOUTRTL;
//Don't need these styles when mirroring is turned on.
cp.ExStyle &= ~(NativeMethods.WS_EX_RTLREADING | NativeMethods.WS_EX_RIGHT | NativeMethods.WS_EX_LEFTSCROLLBAR);
}

return cp;
}
}

showWeekNumbers 显示周次的方法也只是控制样式参数让默认的周次显示出来而已,也无法自己定制

所以,还是放个MonthCalendar后周次自己左边放一个panel自己算好画出来(第一周、第二周。。。)
zt_100094 2008-10-17
  • 打赏
  • 举报
回复
看看这个呢?
http://msdn.microsoft.com/zh-cn/vbasic/0xah4ckt.aspx
这个是Microsoft Visual Studio 2008里的,不知道你的项目是哪个版本
lovehongyun 2008-10-17
  • 打赏
  • 举报
回复
关注一下~~
usxue 2008-10-17
  • 打赏
  • 举报
回复
请熟悉VC的高手来看看啊
这个控件是采用User32.dll发送消息,来改变下拉datetimepicker的显示的!
急啊!
cpio 2008-10-17
  • 打赏
  • 举报
回复
取每月第一天的周次,就是最上面的周次啊
sxmonsy 2008-10-17
  • 打赏
  • 举报
回复
学习下.
JeffChung 2008-10-17
  • 打赏
  • 举报
回复
做自定义控件……

不熟悉
加载更多回复(11)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧