65.9K
CodeProject 正在变化。 阅读更多。
Home

Windows Ribbon for WinForms, 第 7 部分 – Spinner

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.38/5 (15投票s)

2010年3月2日

Ms-PL

3分钟阅读

viewsIcon

27951

downloadIcon

1716

在本文中,我将介绍如何使用 Ribbon Spinner 控件。

这系列 CodeProject 文章基于我首先在我的 博客上发表的一系列帖子。

Spinner 控件

Spinner 控件是一个表示十进制值的控件(例如 double,但具有更高的精度)。 该控件由一个编辑框和两个按钮组成,用于递增和递减。 让我们用 1000 个字来试试吧

image

Spinner 属性

每个 Ribbon 控件都有定义其外观和行为方式的属性。 这里快速回顾一下 spinner 属性,分为逻辑组

Spinner 值相关属性

  • 十进制值 – Spinner 的实际十进制值。
    属性标识符:UI_PKEY_DecimalValue
  • 增量 – 按下递增 / 递减按钮时的步长。
    属性标识符:UI_PKEY_Increment
  • 最大值 – 可以使用 spinner 控件设置的最大值。
    属性标识符:UI_PKEY_MaxValue
  • 最小值 - 可以使用 spinner 控件设置的最小值。
    属性标识符:UI_PKEY_MinValue

注意:在 Ribbon 框架中使用十进制值时,您必须使用支持十进制值的 PropVariant 实现。 更多信息请访问:设置 PropVariant 上的十进制值

Spinner 外观相关属性

  • 小数位数 – 显示在小数点后的位数。
    属性标识符:UI_PKEY_DecimalPlaces
  • 格式字符串 – 值的单位。 在上图中,它是 “m”,表示米。
    属性标识符:UI_PKEY_FormatString
  • 代表字符串 – 表示 spinner 常用值的字符串。 这用于计算 spinner 的宽度,因此您应该在这里设置您预测的最长字符串。 请注意,它不必是实际值,也可以是:“XXXXXXXX”。
    属性标识符:UI_PKEY_RepresentativeString

通用外观属性

  • 快捷键 – Ribbon 框架中此命令的键盘快捷键(通过在 ribbon 应用程序中按 ALT 键查看)。
    属性标识符:UI_PKEY_Keytip
  • 标签 – 此命令的标签。 通常显示在附加控件旁边。
    属性标识符:UI_PKEY_Label
  • 工具提示标题 – 此命令的工具提示的标题。
    属性标识符:UI_PKEY_TooltipTitle
  • 工具提示描述 – 此命令的工具提示的描述。
    属性标识符:UI_PKEY_TooltipDescription
  • 已启用 – 指示此控件是否已启用的标志。
    属性标识符:UI_PKEY_Enabled

图像属性

  • 大图像 – 此命令的大图像。
    属性标识符:UI_PKEY_LargeImage
  • 小图像 – 此命令的小图像。
    属性标识符:UI_PKEY_SmallImage
  • 大高对比度图像 – 此命令的大高对比度图像。
    属性标识符:UI_PKEY_LargeHighContrastImage
  • 小高对比度图像 – 此命令的小高对比度图像。
    属性标识符:UI_PKEY_SmallHighContrastImage

使用 Spinner – Ribbon 标记

像往常一样,应该定义一个命令

<Command Name="cmdSpinner"
         Id="1018"
         LabelTitle="My Spinner">
</Command>

views 部分也很简单

<Application.Views>
  <Ribbon>
    <Ribbon.Tabs>
      <Tab>
        <Group>
          <Spinner CommandName="cmdSpinner" />
        </Group>
      </Tab>
    </Ribbon.Tabs>
  </Ribbon>
</Application.Views>

使用 Spinner – 后台代码

为了帮助我们操作 spinner,我创建了一个帮助程序类,它封装了与 ribbon 框架相关的所有工作。 要使用它,请创建一个 RibbonSpinner 实例,将 Ribbon 实例和 spinner 的命令 ID 传递给构造函数

private Ribbon _ribbon;
private RibbonSpinner _spinner;
                
public Form1()
{
    InitializeComponent();

    _ribbon = new Ribbon();
    _spinner = new RibbonSpinner(_ribbon, (uint)RibbonMarkupCommands.cmdSpinner);
}

我们还需要将 IUICommandHandler.UpdateProperty 方法与我们在 spinner 类中的此方法的实现连接起来

public HRESULT UpdateProperty(uint commandId, ref PropertyKey key, 
                              ref PropVariant currentValue, ref PropVariant newValue)
{
    if (commandId == (uint)RibbonMarkupCommands.cmdSpinner)
    {
        _spinner.UpdateProperty(ref key, ref currentValue, ref newValue);
    }
    return HRESULT.S_OK;
}

更新 (2009 年 11 月 18 日)Ribbon 类的更新版本为 IUICommandHandler 提供了实现,因此用户不再需要实现 ExecuteUpdateProperty 方法。

现在,您可以通过在 _spinner 实例上设置属性来轻松地操作 spinner 属性,例如

private void InitSpinner()
{
    _spinner.DecimalPlaces = 2;
    _spinner.DecimalValue = 1.8M;
    _spinner.TooltipTitle = "Height";
    _spinner.TooltipDescription = "Enter height in meters.";
    _spinner.MaxValue = 2.5M;
    _spinner.MinValue = 0;
    _spinner.Increment = 0.01M;
    _spinner.FormatString = " m";
    _spinner.RepresentativeString = "2.50 m";
    _spinner.Label = "Height:";
}

我们从哪里可以得到它?

您可以在 Windows Ribbon for WinForms 的示例 “05-Spinner” 下找到一个演示如何使用 spinner 控件的工作示例。

暂时就到这里,
Arik Poznanski。

© . All rights reserved.