# Calendar 日历

`Calendar` 用于按月/日历视图展示日期，可选显示农历、今天按钮、日期范围限制，并支持在日期上显示徽标。

```aardio
import win.ui;
var winform = win.form(text="AntdUI Calendar";right=760;bottom=500)
winform.add(host={cls="custom";left=20;top=20;right=730;bottom=450;z=1})

import dotNet.AntdUI;
import System;

var calendar = AntdUI.Calendar(winform.host);
calendar.Full = true;
calendar.ShowChinese = true;
calendar.ShowButtonToDay = true;
calendar.SetMinMax(System.DateTime(2026,1,1), System.DateTime(2026,12,31));
calendar.Value = System.DateTime(2026,7,4);

calendar.DateChanged = function(sender,value){
    winform.text = "选中日期：" + tostring(value);
}

winform.show();
win.loopMessage();
```

## 常用属性

- `Value`：当前日期，类型为 `System.DateTime`。
- `MinDate` / `MaxDate`：可选择的最小/最大日期。
- `Full`：撑满显示区域。
- `ShowChinese`：显示农历信息。
- `ShowButtonToDay`：显示“今天”按钮。
- `Radius`：圆角。
- `Back` / `Fore`：背景与文字颜色。

## 常用方法

- `SetDate(date)`：设置日期并返回控件自身。
- `SetMinMax(min,max)`：设置日期范围。
- `SetBadge(listOrDictionary)`：设置日期徽标。
- `LoadBadge()`：重新加载徽标。

## 日期徽标

当前扩展库验证的常用写法是创建 `dotNet.list("AntdUI.DateBadge")`，逐个加入 `AntdUI.DateBadge(dateText,content,color)`，再传给 `SetBadge`：

```aardio
import System.Drawing;

var badges = dotNet.list("AntdUI.DateBadge");
var badge = AntdUI.DateBadge("2026-07-06","巡检",0xFF1677FF);
badge.Radius = 4;
badge.Size = 0.6; //相对 Calendar 字体的缩放比例，不是像素字号
badges.Add(badge);

calendar.SetBadge(badges);
calendar.LoadBadge();
```

`DateBadge` 常用属性包括：

- `Date`：日期字符串，建议使用 `yyyy-MM-dd`。
- `Content`：徽标内容文本或数值。
- `Fill`：徽标填充色；aardio 中直接使用 `0xAARRGGBB` 数值。
- `Round` / `Radius`：圆形或圆角样式。
- `Align`：相对日期单元格的对齐位置。
- `Size`：徽标字体相对于 `Calendar.Font` 的缩放比例，默认值为 `0.6`，不是像素字号；一般使用 `0.5`～`0.8`，也可以不设置而沿用默认值。误设为 `11` 会得到基础字体 11 倍的超大徽标。
- `OffsetX` / `OffsetY`：徽标相对日期单元格的横向与纵向偏移。

更完整的排期面板请参考 [Calendar 项目排期日历](../../advanced/calendar-schedule-showcase.html)。

## 事件

- `DateChanged`：日期改变时触发，常用第二个参数为 `System.DateTime`。
- `ItemPaint` / `ItemPaintBegin`：自定义绘制日期单元格。
- `ItemMouseClick` / `ItemMouseDown` / `ItemMouseUp`：日期单元格鼠标事件。