Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[Feature Request] Proposals for input/display improvements and hexadecimal support in NumericUpDown

未关闭
#4,108 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
15/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
活跃
技术栈
csharp
领域
desktop

调研方向

Start from the UpDownBase.cs base class that the proposed properties (SelectAllOnFocus, DecimalPlaces, Hexadecimal, IsEditable) would extend, and from the Enter-key handling in OnPreviewKeyDown. The hex controls (HexByte through HexUlong) would need new types and default styles. The text-foreground idea touches TextFieldAssist.TextBoxViewForeground. Done would mean maintainers agree which proposals to accept, since the issue is a bundle of design decisions, not one change.

由索引模型根据 Issue 内容生成。

描述

enhancement evaluation required
Description

I often build custom NumericUpDown controls to fit my needs. I have extracted some key features and implemented them for verification. While some parts of my implementation might still be unrefined, I would be grateful if you could check the concepts and consider incorporating these ideas into the library.

1. Extension / Refactoring Ideas for UpDownBase.cs
  • SelectAllOnFocus (bool): Automatically selects all text when the text area gains focus.
  • DecimalPlaces (int): Handles rounding and formats the display to a fixed number of decimal places (e.g., keeping trailing zeros), similar to standard WinForms/WPF numeric controls.
  • Hexadecimal (bool, protected): Enables hex mode and relies on DecimalPlaces to define the display digit length (accessible only via inheritance).
  • IsEditable (bool): Toggles the underlying TextBox.IsReadOnly property to make the text area read-only, allowing value changes only through Up/Down button interactions.
  • Enter Key Behavior: Updates the numeric value and automatically re-selects all text upon pressing the Enter key.
2. Addition of Hexadecimal (Hex) Support Controls
  • Introduce dedicated hex controls: HexByte, HexShort, HexInt, HexLong, HexUshort, HexUint, and HexUlong. Each control would set its own DefaultStyleKey and override Hexadecimal to true.

Background & Detailed Use Cases
① Improving Keyboard/Manual Input Workflow

This is intended for scenarios where users need to repeatedly and quickly modify configuration values using only the keyboard, without relying on mouse interactions:

  1. Control gains focus -> the entire text is selected (SelectAllOnFocus).
  2. User types the new number.
  3. User presses the Enter key to confirm the value (handled via OnPreviewKeyDown).
  4. Upon confirmation, the text automatically returns to a fully selected state.
  5. This loop allows for seamless, rapid manual data entry.
  • Related Features: SelectAllOnFocus, Enter key confirmation, and restricting input to numeric keys only.
② Enhancing Numerical Visibility & Reducing Human Error
  • Consistent Digit Alignment via DecimalPlaces:
    When entering values like 1.23, 12.3, or 123, a lack of aligned decimal places can easily lead to visual misinterpretation. Formatting them as 1.230, 12.300, and 123.000 dramatically reduces caret-skipping and reading mistakes while making significant digits obvious. It also stabilizes the control's layout width during Up/Down stepping.
  • Targeted Foreground Color for the Numeric Part Only:
    Sometimes it is useful to turn negative values red or change colors based on thresholds. Currently, setting Foreground="Red" turns everything red, including PrefixText and SuffixText.
    It would be highly beneficial to have a property like materialDesign:TextFieldAssist.TextBoxViewForeground to selectively color just the inner text/value field. (Note: I attempted to implement this locally but couldn't get it working perfectly.)
  • Restricting Direct Typing via IsEditable:
    Useful when you want to prevent arbitrary user typing and restrict changes solely to the Up/Down buttons for data safety.

Thank you for your time and for maintaining this wonderful library. I hope these ideas can be helpful for future updates!

主要语言
C#
星标
16.3k
派生
3.5k
平均合并
1 天 23 小时
30 天内合并 PR
9

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

MaterialDesignInXAML/MaterialDesignInXamlToolkit 的其他 Issue

查看 MaterialDesignInXAML/MaterialDesignInXamlToolkit 的全部 Issue

相似的 Issue

更多 C# Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。