# dotNet.ReoGrid 扩展库 - 控件外观

ReoGrid 支持修改组件样式，例如颜色和选区边框宽度。  
![438](../images/438.png)

## 设置控件外观

所有外观样式都存储在 `ControlAppearanceStyle` 对象中，可通过组件实例获取或设置。

```aardio
// 创建带主题颜色的控件样式实例
var rgcs = ReoGrid.ControlAppearanceStyle(
    ReoGrid.Graphics.SolidColor.Gray,  // 主色调
    ReoGrid.Graphics.SolidColor.DarkOrange,  // 强调色
    false  // 是否使用系统主题
);

// 将文本颜色设为灰色
rgcs[ReoGrid.ControlAppearanceColors.GridText] = ReoGrid.Graphics.SolidColor.Gray;

// 应用外观样式
grid.ControlStyle = rgcs;  // grid 是 ReoGridControl 实例
```

效果：  
![439](../images/439.png)

## 编辑工具

ReoGrid 提供了可视化编辑工具来调整控件外观。启动 ReoGrid 编辑器后，选择 `工具` > `控件外观...`。

![440](../images/440.png)

编辑样式后，点击"导出"可生成对应的 aardio 代码：

```aardio
var rgcs = ReoGrid.ControlAppearanceStyle();
rgcs[ReoGrid.ControlAppearanceColors.LeadHeadNormal] = ReoGrid.Graphics.SolidColor.Lavender;
rgcs[ReoGrid.ControlAppearanceColors.LeadHeadHover] = ReoGrid.Graphics.SolidColor.Transparent;
rgcs[ReoGrid.ControlAppearanceColors.LeadHeadSelected] = ReoGrid.Graphics.SolidColor.Lavender;
rgcs[ReoGrid.ControlAppearanceColors.LeadHeadIndicatorStart] = ReoGrid.Graphics.SolidColor.Gainsboro;
...
```

## 语言本地化

ReoGrid 可根据运行时环境自动切换界面语言。

| **模块**       | **英文** | **日文** | **俄文** | **中文** |
| :------------- | :------: | :------: | :------: | :------: |
| ReoGrid 核心   | 支持     | 支持     | 支持     | 支持     |
| ReoGrid 编辑器 | 支持     | 支持     | 支持     |          |
| 演示项目       | 支持     | 支持     |          |          |

界面文本定义在 `LanguageResource` 静态类中，修改其属性即可实现本地化。例如：

```aardio
// 在 aardio 中需要通过反射设置静态类属性
ReoGrid.LanguageResource.set_Property("Menu_InsertSheet", "插入工作表");
ReoGrid.LanguageResource.set_Property("Menu_DeleteSheet", "删除工作表");
ReoGrid.LanguageResource.set_Property("Menu_RenameSheet", "重命名工作表");
```

对于带 `Menu` 或 `Button` 前缀的属性，还可以设置快捷键：

```aardio
ReoGrid.LanguageResource.set_Property("Menu_InsertSheet", "插入工作表(&I)");
```

效果：  
![230](../images/230.png)

> **aardio 特别说明**  
> 1. 颜色值需使用 `ReoGrid.Graphics.SolidColor` 预定义颜色或通过 RGB 值创建  
> 2. 修改静态类属性需使用反射方法 `set_Property`  
> 3. 实际开发中建议将本地化配置集中管理