# Transfer 穿梭框

`Transfer` 用于在“待选”和“已选”两个列表之间移动项目，常见于权限分配、成员选择、字段配置等。

## 最小示例

```aardio
import win.ui;
import dotNet.AntdUI;
/*DSG{{*/
var winform = win.form(text="AntdUI Transfer";right=579;bottom=369)
winform.add(
host={cls="custom";left=10;top=9;right=566;bottom=354;edge=1;z=1}
)
/*}}*/

var transfer = AntdUI.Transfer(winform.host);
transfer.SourceTitle = "可选城市";
transfer.TargetTitle = "已选城市";
transfer.ShowSearch = true;
transfer.ShowSelectAll = true;
transfer.Items.Add(AntdUI.TransferItem("杭州","hangzhou"));
transfer.Items.Add(AntdUI.TransferItem("宁波","ningbo"));
transfer.Items.Add(AntdUI.TransferItem("温州","wenzhou"));
transfer.TransferChanged = function(sender,e){
    winform.text = "已更新选择";
}

winform.show();
win.loopMessage();
```

## 常用属性与事件

- `Items`：项目集合，添加 `AntdUI.TransferItem(text,value)`。
- `SourceTitle`、`TargetTitle`：左右列表标题。
- `ShowSearch`：显示搜索框。
- `ShowSelectAll`：显示全选。
- `OneWay`：单向移动模式。
- `DragSort`：目标列表拖动排序。
- `GetSourceItems()`、`GetTargetItems()`：获取左右列表项目。
- `SetTargetItemsByValue(...)`、`SetTargetItemsById(...)`：按值或 ID 设置目标列表。
- `TransferChanged`：穿梭选择变化事件。

## TransferItem

- `Text`：显示文本。
- `Value`：业务值。
- `ID`、`Name`：可选标识。
- `Selected`、`Visible`、`Enabled`：状态控制。

## 注意事项

- 需要保存结果时通常读取 `GetTargetItems()`，再遍历其中的 `Value` 或 `ID`。
- 大数据量时建议配合搜索，避免一次展示过多项目。