用Visual C#.NET编写服务器日期控件(转)稍做改动,运行时不会报CalendarEnum找不着错误

c# 可输入可选择时间日期控件 c# 可输入可选择时间日期控件。包含源代码与编译好的DLL,功能用户可以再次开发,实现可输入与可以选择功能 立即下载
 一、序言

  Visual C#.NET是微软公司出品的一种新的编程语言(以下简称C#),它继承了C语言的一些特性,也加入了一些新的元素。以前用过Delphi开发程序的人可能刚开始使用C#的时候,对其有一种似曾相识的感觉(至少包括我)。是的,C#语言的创始人正是以前在Borland公司开发出Delphi语言的Anders Hejlsberg。在我开始使用C#开发程序时,就觉得它是一款很棒的开发Windows Form & Web程序的RAD工具。
在开发Web程序方面,C#的出现打破了以前的网页开发模式,实现了与开发Windows

  Form程序一样的所见即所得的功能。C#提供了一些常用的Web Form Control供开发人员使用,并且只需将控件拖入页面中即可,非常简单。但有时这些控件也不能满足开发人员的需要,需要开发人员自己编写用户控件(User Control)或自定义控件(Custom Control)来满足需求。在这里,我将讲解如何在C#中开发服务器控件。

  二、预备知识

  在C#中可以开发两种服务器控件,一个是用户控件(User Control)和自定义控件(Custom Control)。用户控件的本质与页面文件(aspx文件)差不多,是可被其它aspx页面重复使用的HTML代码段,当然它也包括后台代码(Code-behind),后缀名是ascx。所以在开发一些公用的静态页面时(例如页头,页脚)经常用到,但它的缺点是不易继承,不易分发,无法编译成二进制代码来进行部署。但是自定义控件的功能就强大许多,它可以被编译成二进制代码(DLL文件),可以被扩展、继承、分发。就像Web Form Control一样,其实它们每个控件就是一个DLL文件。

  开发用户控件比较简单,就像编写一个aspx页面一样,在这里就不介绍了。本文对象是自定义控件。服务器控件的基类是System.Web.UI.Control。如果要开发可视化的服务器控件,那我们需要从System.Web.UI.WebControls来继承,否则从System.Web.UI.Control继承。

  服务器控件在设计时以runat=”server”脚本代码嵌入到aspx文件中来表示此控件是在服务器端运行的。在服务器控件所在页面提交回传(PostBack)过程中是依靠ViewState(视图状态)来维护控件状态的。所以我们在设计服务器控件属性时,其值应保存在ViewState中。

  三、代码编写

  C#中有一个日历控件Calendar,但是现在我需要一个可以下拉的日历控件,并且初始时不显示日历,当我点击下拉按钮时才弹出,并且当选择了日期,日历会自动隐藏且选择的日期值会显示到相应的输入框中。显然Calendar控件不能满足我的需要,但是稍后我会在我的自定义控件中用到它。

  首先新建项目,在项目类型中选择Visual C#项目,在模板列表中选择Web控件库,输入项目名称AquaCalendar,然后选择项目所在目录,点击【确定】按钮。C#将会生成基本的框架代码。将项目中的类文件和类名改名为DatePicker(即日期控件的类名)。由于DatePicker是可视化控件,所以我们必须从System.Web.UI.WebControls继承。并且它包括一个输入框,一个按钮和日历控件,需要在DatePicker类中声明它们。像这种以多个服务器控件组合的控件成为复合控件。代码如下,比较重要的方法和代码在注释中会加以说明:

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Drawing;

namespace AquaCalendar
{
    public enum CalendarEnum { ShortDateTime, LongDateTime };
 [DefaultProperty("Text"), //在属性工具箱中显示的默认属性
 ToolboxData("<{0}:DatePicker runat=server></{0}:DatePicker>")]
 public class DatePicker : System.Web.UI.WebControls.WebControl , IPostBackEventHandler
 {
  //选择日期按钮的默认样式
  private const string _BUTTONDEFAULTSTYLE = "BORDER-RIGHT: gray 1px solid; BORDER-TOP: gray 1px solid; BORDER-LEFT: gray 1px solid; CURSOR: hand; BORDER-BOTTOM: gray 1px solid;";

  //按钮默认文本

  private const string _BUTTONDEFAULTTEXT = "...";
  private System.Web.UI.WebControls.Calendar _Calendar;

  public override ControlCollection Controls
  {
   get
   {
    EnsureChildControls(); //确认子控件集都已被创建
    return base.Controls;
   }
  }

  //创建子控件(服务器日历控件)

  protected override void CreateChildControls()
  {
   Controls.Clear();
   _Calendar = new Calendar();
   _Calendar.ID = MyCalendarID;
   _Calendar.SelectedDate = DateTime.Parse(Text);
   _Calendar.TitleFormat = TitleFormat.MonthYear;
   _Calendar.NextPrevFormat = NextPrevFormat.ShortMonth;
   _Calendar.CellSpacing = 0;
   _Calendar.Font.Size = FontUnit.Parse("9pt");
   _Calendar.Font.Name = "Verdana";
   _Calendar.SelectedDayStyle.BackColor = ColorTranslator.FromHtml("#333399");
   _Calendar.SelectedDayStyle.ForeColor = ColorTranslator.FromHtml("White");
   _Calendar.DayStyle.BackColor = ColorTranslator.FromHtml("#CCCCCC");
   _Calendar.TodayDayStyle.BackColor = ColorTranslator.FromHtml("#999999");
   _Calendar.TodayDayStyle.ForeColor = ColorTranslator.FromHtml("Aqua");
   _Calendar.DayHeaderStyle.Font.Size = FontUnit.Parse("8pt");
   _Calendar.DayHeaderStyle.Font.Bold = true;
   _Calendar.DayHeaderStyle.Height = Unit.Parse("8pt");
   _Calendar.DayHeaderStyle.ForeColor = ColorTranslator.FromHtml("#333333");
   _Calendar.NextPrevStyle.Font.Size = FontUnit.Parse("8pt");
   _Calendar.NextPrevStyle.Font.Bold = true;
   _Calendar.NextPrevStyle.ForeColor = ColorTranslator.FromHtml("White");
   _Calendar.TitleStyle.Font.Size = FontUnit.Parse("12pt");
   _Calendar.TitleStyle.Font.Bold = true;
   _Calendar.TitleStyle.Height = Unit.Parse("12pt");
   _Calendar.TitleStyle.ForeColor = ColorTranslator.FromHtml("White");
   _Calendar.TitleStyle.BackColor = ColorTranslator.FromHtml("#333399");
   _Calendar.OtherMonthDayStyle.ForeColor = ColorTranslator.FromHtml("#999999");
   _Calendar.NextPrevFormat = NextPrevFormat.CustomText;
   _Calendar.NextMonthText = "下月";
   _Calendar.PrevMonthText = "上月";
   _Calendar.Style.Add("display","none"); //默认不显示下拉日历控件
   _Calendar.SelectionChanged += new EventHandler(_Calendar_SelectionChanged);
   this.Controls.Add(_Calendar);
  }
  [
   Category("Appearance"), //该属性所属类别,参见图
   DefaultValue(""), //属性默认值
   Description("设置该日期控件的值。") //属性的描述
  ]

  public string Text
  {
   get
   {
    EnsureChildControls();
    return (ViewState["Text"] == null)?System.DateTime.Today.ToString("yyyy-MM-dd"):ViewState["Text"].ToString();
   }
   set
   {
    EnsureChildControls();
    DateTime dt = System.DateTime.Today;
    try
    {
     dt = DateTime.Parse(value);
    }
    catch
    {
     throw new ArgumentOutOfRangeException("请输入日期型字符串(例如:1981-04-29)!");
    }

    ViewState["Text"] = DateFormat == CalendarEnum.LongDateTime?dt.ToString("yyyy-MM-dd"):dt.ToString("yyyy-M-d");
   }
  }

  //重载服务器控件的Enabled属性,将选择日期按钮变灰(禁用)

  public override bool Enabled
  {
   get
   {
    EnsureChildControls();
    return ViewState["Enabled"] == null?true:(bool)ViewState["Enabled"];
   }
   set
   {
    EnsureChildControls();
    ViewState["Enabled"] = value;
   }
  }

  public string ButtonStyle
  {
   get
   {
    EnsureChildControls();
    object o = ViewState["ButtonSytle"];
    return (o == null)?_BUTTONDEFAULTSTYLE:o.ToString();
   }
   set
   {
    EnsureChildControls();
    ViewState["ButtonSytle"] = value;
   }
  }

  [
   DefaultValue(CalendarEnum.LongDateTime),
  ]

  public CalendarEnum DateFormat
  {
   get
   {
    EnsureChildControls();
    object format = ViewState["DateFormat"];
    return format == null?CalendarEnum.LongDateTime:(CalendarEnum)format;
   }
   set
   {
    EnsureChildControls();
    ViewState["DateFormat"] = value;
    DateTime dt = DateTime.Parse(Text);
    Text=DateFormat == CalendarEnum.LongDateTime?dt.ToString("yyyy-MM-dd"):dt.ToString("yyyy-M-d");
   }
  }

  [
   Browsable(false),
   DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
  ]

  public string MyCalendarID //复合控件ID
  {
   get
   {
    EnsureChildControls();
    return this.ClientID+"_MyCalendar";
   }
  }

  [
   Browsable(false),
   DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
  ]

  public string MyCalendarName //复合控件名称
  {
   get
   {
    EnsureChildControls();
    return this.UniqueID+":MyCalendar";
   }
  }

  [
   Browsable(false),
   DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
  ]

  public string DatePickerInputID //复合控件中输入框的ID
  {
   get
   {
    EnsureChildControls();
    return this.ClientID+"_DateInput";
   }
  }

  [
   Browsable(false),
   DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
  ]

  public string DatePickerInputName //复合控件中输入框的名称
  {
   get
   {
    EnsureChildControls();
    return this.UniqueID+":DateInput";
   }
  }

  [
   Browsable(false),
   DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
  ]

  public string DatePickerButtonID //复合控件中按钮的ID
  {
   get
   {
    EnsureChildControls();
    return this.ClientID+"_DateButton";
   }
  }

  [
   Browsable(false),
   DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
  ]

  public string DatePickerButtonName //复合控件中按钮的名称
  {
   get
   {
    EnsureChildControls();
    return this.UniqueID+":DateButton";
   }
  }

  public string ButtonText
  {
   get
   {
    EnsureChildControls();
    return ViewState["ButtonText"] == null?_BUTTONDEFAULTTEXT:(string)ViewState["ButtonText"];
   }
   set
   {
    EnsureChildControls();
    ViewState["ButtonText"] = value;
   }
  }

  /// <summary>
  /// 将此控件呈现给指定的输出参数。
  /// </summary>
  /// <param name="output"> 要写出到的 HTML 编写器 </param>

  protected override void Render(HtmlTextWriter output)
  {
   //在页面中输出控件时,产生一个表格(二行二列),以下是表格的样式
   output.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
   output.AddAttribute(HtmlTextWriterAttribute.Border, "0");
   output.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");

   output.AddStyleAttribute("LEFT", this.Style["LEFT"]);
   output.AddStyleAttribute("TOP", this.Style["TOP"]);
   output.AddStyleAttribute("POSITION", "absolute");

   if (Width != Unit.Empty)
   {
    output.AddStyleAttribute(HtmlTextWriterStyle.Width, Width.ToString());
   }
   else
   {
    output.AddStyleAttribute(HtmlTextWriterStyle.Width, "200px");
   }

   output.RenderBeginTag(HtmlTextWriterTag.Table); //输出表格
   output.RenderBeginTag(HtmlTextWriterTag.Tr); //表格第一行
   output.AddAttribute(HtmlTextWriterAttribute.Width, "90%");
   output.RenderBeginTag(HtmlTextWriterTag.Td);

   //以下是第一行第一列中文本框的属性及其样式设置

   if (!Enabled)
   {
    output.AddAttribute(HtmlTextWriterAttribute.ReadOnly, "true");
   }

   output.AddAttribute(HtmlTextWriterAttribute.Type, "Text");
   output.AddAttribute(HtmlTextWriterAttribute.Id, DatePickerInputID);
   output.AddAttribute(HtmlTextWriterAttribute.Name, DatePickerInputName);
   output.AddAttribute(HtmlTextWriterAttribute.Value, Text);
   output.AddStyleAttribute(HtmlTextWr
iterStyle.Width, "100%");
   output.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
   output.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, Font.Name);
   output.AddStyleAttribute(HtmlTextWriterStyle.FontSize, Font.Size.ToString());
   output.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, Font.Bold?"bold":"");
   output.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, ColorTranslator.ToHtml(BackColor));
   output.AddStyleAttribute(HtmlTextWriterStyle.Color, ColorTranslator.ToHtml(ForeColor));
   output.RenderBeginTag(HtmlTextWriterTag.Input); //输出文本框
   output.RenderEndTag();
   output.RenderEndTag();
   output.AddAttribute(HtmlTextWriterAttribute.Width, "*");
   output.RenderBeginTag(HtmlTextWriterTag.Td);

   //以下是第一行第二列中按钮的属性及其样式设置

   if (!Enabled)
   {
    output.AddAttribute(HtmlTextWriterAttribute.Disabled, "true");
   }

   output.AddAttribute(HtmlTextWriterAttribute.Type, "Submit");
   output.AddAttribute(HtmlTextWriterAttribute.Id, DatePickerButtonID);
   output.AddAttribute(HtmlTextWriterAttribute.Name, DatePickerButtonName);
   output.AddAttribute(HtmlTextWriterAttribute.Value, ButtonText);
   output.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
   output.AddAttribute(HtmlTextWriterAttribute.Onclick, Page.GetPostBackEventReference(this)); //点击按钮时需要回传服务器来触发后面的OnClick事件

   output.AddAttribute(HtmlTextWriterAttribute.Style, ButtonStyle);
   output.RenderBeginTag(HtmlTextWriterTag.Input); //输出按钮
   output.RenderEndTag();
   output.RenderEndTag();

   output.RenderEndTag();
   output.RenderBeginTag(HtmlTextWriterTag.Tr);
   output.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
   output.RenderBeginTag(HtmlTextWriterTag.Td);
   _Calendar.RenderControl(output); //将日历子控件输出
   output.RenderEndTag();
   output.RenderEndTag();
   output.RenderEndTag();
  }

  //复合控件必须继承IpostBackEventHandler接口,才能继承RaisePostBackEvent事件

  public void RaisePostBackEvent(string eventArgument)
  {
   OnClick(EventArgs.Empty);
  }

  protected virtual void OnClick(EventArgs e)
  {
   //点击选择日期按钮时,如果日历子控件没有显示则显示出来并将文本框的值赋值给日历子控件
   if (_Calendar.Attributes["display"] != "")
   {
    _Calendar.SelectedDate = DateTime.Parse(Text);
    _Calendar.Style.Add("display","");
   }
  }

  //复合控件中的日历控件日期变化事件

  private void _Calendar_SelectionChanged(object sender, EventArgs e)
  {
   //当选择的日期变化时,将所选日期赋值给文本框并将日历子控件隐藏
   Text = _Calendar.SelectedDate.ToString();
   _Calendar.Style.Add("display","none");
  }
 }
}

  在上面的代码中,需要注意以下几点:

  ·如果你想将此控件的某些属性供重载,则在声明属性前加上virtual关键字;

  ·在页面输出此控件时(即在Render事件中),是先定义子控件的样式或属性,然后再产生子控件;

  ·在隐藏日历子控件时,建议不要使用Visible属性来显示/隐藏,使用Visible=false隐藏时服务器端将不会将日历控件HTML代码发送给客户端,会导致复合控件装载日历控件的表格会空白一块出来,影响页面的布局。所以使用样式display=none设置来使日历控件在客户端隐藏,但是HTML代码依然存在于页面中;

  四、结束语

  在编写服务器控件时,需要一定的HTML语言基础,也要清楚.NET程序的请求处理方式。服务器控件封装了客户端行为及逻辑判断,无需开发者添加更多代码。当然,有些地方使用服务器控件可以带来方便,但是也增加了服务器的负荷。有时适当的结合javascript使一些代码在客户端运行,可提高WEB应用程序效率。
C# 时间输入控件 一个很不错的时间输入控件,很好用,操作很方便 立即下载

相关推荐

.Net中非常好用的日历控件

这是关于.net方面的技术,它包含了非常好用的日历控件。

用Visual C#.NET编写服务器日期控件

一、序言  Visual C#.NET是微软公司出品的一种新的编程语言(以下简称C#),它继承了C语言的一些特性,也加入了一些新的元素。以前用过Delphi开发程序的人可能刚开始使用C#的时候,对其有一种似曾相识的感觉(至少包括我)。是的,C#语言的创始人正是以前在Borland公司开发出Delphi语言的Anders Hejlsberg。在我开始使用C#开发程序时,就觉得它是一款很棒的开发Win...

weixin_30610755的博客 144

用C#编写的日期选择web自定义控件

用C#编写的日期选择web自定义控件(有修订).rar

Visual C++中的日历控件使用详解

前言:  控件在Visual C++编程学习中占据很重要的位置。笔者在国外英文网站上看到了这篇关于日历控件学习的文章,虽然内容看似简单,但读完后感觉到还是学到了一些东西。感觉到原著作者对一些不常用的日历控制的使用方法写的介绍的很详细,通俗易懂,于平淡之中显神奇,是对日历控件的"深度挖掘",对VC的初学者应该是很有帮助的,所以就将其翻译过来介绍给国内读者朋友。  一、有关日历控件的介绍  Win32

5750

ASP.NET c# 日期控件

ASP.NET c# 日期控件,很好用,测试通过 下载后解压放到站点文件夹下,引用时注意路径 前台: 再添加一个文本框控件 一切就OK了

BAPI创建委外采购订单

使用BAPI BAPI_PO_CREATE1创建委外采购订单,组件为手工输入时,有几个点需要注意: 1、已通过CS01创建过BOM的物料,创建时会自动带出components。如果要修改当前组件清单,可以通过设置pocomponents-change_id = 'E’来实现 lv_sline = lv_sline + 1. ls_pocomponents-po_item = l_ebelp + 10. ls_pocomponents-ITEM_NO = l

Buffalo_soldier的博客 3260

.net日期控件使用

ASP.NET 使用My97DatePicker日期控件 首先要下载该控件的包,下载地址:http://pan.baidu.com/s/1Aa5gk 引用文件 <script src="js/My97DatePicker/WdatePicker.js" type="text/javascript"></script><script src="js/My97...

一路向北 1万+

DESeq2实战:利用LRT检验解析时间序列基因表达动态变化

本文详细介绍了如何使用DESeq2中的LRT检验分析时间序列基因表达数据,揭示基因表达动态变化模式。通过构建完整模型与简化模型比较,LRT检验能有效识别处理效应随时间变化的基因,适用于发育过程、疾病进展等研究。文章提供了从数据准备、模型构建到结果可视化的完整实战指南,并分享了高级技巧与常见问题排查方法。

weixin_29062671的博客 439

C# 中的DateTimePicker控件, RadioButton控件,LinkLabel控件

。日期时间控件(DateTimePicker)在时间控件中的应用最多,主要用于在界面上显示当前的时间Format属性的枚举值及说明: 枚举值 说明 Custom DateTimePicker 控件以自定义格式显示日期/时间值 Long DateTimePicker 控件以用户操作系统设置的长日期格式显示日期/时间值 Short DateTimePicker 控件以用户操作系统设置的短日期格式显示日期/时间值 Time DateTimePicke

weixin_57638208的博客 1219

利用CANoe和CAPL实现高效CAN网关设计与仿真

本文详细介绍了如何利用CANoe和CAPL进行高效CAN网关的设计与仿真。通过搭建仿真工程、导入DBC数据库、编写CAPL脚本等步骤,手把手指导读者构建一个连接不同CAN网络的网关模型,实现报文的监听、转发与信号处理,从而在硬件开发前验证逻辑,提升汽车电子开发效率与可靠性。

weixin_29164091的博客 294

汽车诊断服务(UDS——0x11服务解析)

ECU复位服务(0x11)详解:该服务支持硬件/钥匙开关/软件三种复位类型(0x01-0x03),复位前需发送肯定响应。请求格式为11+子功能,响应含51+子功能。典型应用需配合安全访问流程,测试时需监控CAN总线通信及DTC状态。复位后ECU将返回默认会话,期间不处理任何诊断请求。服务在编程会话且安全解锁后执行,硬复位会初始化存储数据。

从事汽车行业 979

ASP.NET 日期控件

控件使用方式下载地址:http://download.csdn.net/source/3518623  控件1.显示效果: 使用方法:将该Datepicker目录直接放到项目里面,界面上添加代码           $(function() {

做得最大的项目,就是人生 1万+

OpenSpec 从入门到精通:AI 时代的最佳 SDD 范式

同样都是「先写规范再写代码」的开源 SDD 框架,OpenSpec(https://github.com/fission-ai/openspec) 展现出了极高的工程性价比,无论是使用 Claude Code、Cursor 还是 Aider,都可以无缝接入 OpenSpec 的规格管理层。这些问题需要人来做判断,AI 做不了这个主。整个流程跑下来,OpenSpec 产出的效果还是令人满意的,一些前期没有考虑到的细节 AI 都补上了,生成的相关文档也有利于开发人员的知识对齐,可以尝试在团队内部推广。

qq_39093474的博客 925

C#实现时钟控件

C#实现的时钟控件和时钟屏保

zhanglianzhu_91的博客 1740

第4章-07-将WebDriver获取的Cookie传递给Requests

在使用Selenium WebDriver获取了浏览器的Cookies之后,你可以将这些Cookies传递给requests库,以便在后续的HTTP请求中使用这些Cookies。这样做可以让你模拟浏览器会话,使得请求看起来像是从之前使用Selenium WebDriver控制的浏览器发出的。

黑夜开发者的博客 691

PCL 使用点云创建数字高程模型DEM【2025最新版】

使用点云创建数字高程模型DEM,并将结果保存为高程图像。博客长期更新,本文最近更新时间为:2025年9月15日。

点云侠的博客 2294

C# winform 漂亮的日期时间控件

C# 漂亮的日期时间控件

海乐学习 1222

基于STM32设计的太阳能智慧路灯_444

本文设计并实现了一种基于 STM32 的太阳能智慧路灯系统。系统以 STM32F103C8T6 单片机为核心,集成温湿度检测、空气质量检测、环境光照检测、行人检测和路灯故障检测等功能,实现对路灯运行环境和工作状态的实时感知。

460

JavaSe基础2023年1月31日学习内容Enum、Date、Calendar的使用、LocalDateTimeTest类的使用

Enum枚举类型、Date时间类的使用、Calendar时间类使用、LocalDateTime使用

森森学习Java的分享 219

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C# 自定义控件,日期时间选择输入插件

C# 自定义控件,日期时间选择输入插件

暂无内容 2万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C#获取本周,本月,本年,本季度等时间

DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d"))); //本周周一 DateTime endWeek = startWeek.AddDays(6); //本周周日 DateTime startMonth ...

weixin_30279671的博客 412

c# asp.net 日历控件(9)

Calendor控件为用户显示一个日历。它还提供日历选取功能。Calendor控件必须放在Form或者Panel控件内,或者控件的模板内。在添加Calendor控件之后。它一次显示一月的日期。另外,它还显示该月之前的一周和之后的一周。因此,可以显示六周。FirstDateOfWeek设置要在控件中的第一天列显示一周的某天NextMonthText设置下一个月导航控件的显...

weixin_33806300的博客 294

理解 Linux 动态库加载:LD_LIBRARY_PATH

flyfish

二分掌柜的 329
上一篇: Response.ContentType类型汇总
下一篇: 收集的网上服务
fuda_1985
博客等级 码龄20年 77粉丝 33原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值