c# - 简化代码 C# switch 语句

标签 c# wpf

我写了一堆 switch case 语句,但我知道这可以简化,任何指导都会得到尊重。我是 XAML 的新手。

switch (e.Key)
{
    case Key.Escape:
        this.DialogResult = false;
        break;
    case Key.Return:
        this.DialogResult = true;
        break;
    case Key.Back:
        if (ResultValue != null && ResultValue.Length > 0)
            ResultValue = ResultValue.Remove(ResultValue.Length - 1);
        if (isUserAccess)
        {
            if (UserAccessPasswordValue != null && UserAccessPasswordValue.Length > 0)
                UserAccessPasswordValue = UserAccessPasswordValue.Remove(UserAccessPasswordValue.Length - 1);
        }
        break;
    case Key.Space:
        if (!CheckOutputLength(ResultValue)) return;
            ResultValue += " ";
        break;
    case Key.NumPad0:
    case Key.D0:             
    case Key.NumPad1:
    case Key.D1:
    case Key.NumPad2:
    case Key.D2:
    case Key.NumPad3:
    case Key.D3:
    case Key.NumPad4:
    case Key.D4:
    case Key.NumPad5:
    case Key.D5:
    case Key.NumPad6:
    case Key.D6:
    case Key.NumPad7:
    case Key.D7:
    case Key.NumPad8:
    case Key.D8:
    case Key.NumPad9:
    case Key.D9:
    case Key.A:
    case Key.B:
    case Key.C:
    case Key.D:
    case Key.E:
    case Key.F:
    case Key.G:
    case Key.H:
    case Key.I:
    case Key.J:
    case Key.K:
    case Key.L:
    case Key.M:
    case Key.N:
    case Key.O:
    case Key.P:
    case Key.Q:
    case Key.R:
    case Key.S:
    case Key.T:
    case Key.U:
    case Key.V:
    case Key.W:
    case Key.X:
    case Key.Y:
    case Key.Z:
        CheckandAddValue(e.Key.ToString());
        break;
}

我的尝试有太多错误。这是一个自定义键盘,可检测用户输入。上面的代码有效,我能够得到所需的结果,但我知道这可以变得更简单。

我的简化尝试

if ((e.Key >= Key.A && e.Key <= Key.Z) || (e.Key >= Key.D0 && e.Key <= Key.D9) || (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9))

最佳答案

处理您想要的案例,否则默认案例..

        switch (e.Key)
        {
            case Key.Escape:
                this.DialogResult = false;
                break;
            case Key.Return:
                this.DialogResult = true;
                break;
            case Key.Back:
                if (ResultValue != null && ResultValue.Length > 0)
                    ResultValue = ResultValue.Remove(ResultValue.Length - 1);
                if (isUserAccess)
                {
                    if (UserAccessPasswordValue != null && UserAccessPasswordValue.Length > 0)
                        UserAccessPasswordValue = UserAccessPasswordValue.Remove(UserAccessPasswordValue.Length - 1);
                }
                break;
            case Key.Space:
                if (!CheckOutputLength(ResultValue)) return;
                ResultValue += " ";
                break;
            case default :
                CheckandAddValue(e.Key.ToString());
                break;
        }

关于c# - 简化代码 C# switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52067996/

相关文章:

wpf - 在 WPF 中为电话号码设置文本框格式

c# - 断言 ..\mono\mini\unwind.c :620, 条件 `cfa_reg != -1' 未满足

c# - UseInMemoryDatabase() 的 dotnet 核心没有重载方法需要 0 个参数

c# - 多线程集合锁类型

c# - 两种方式绑定(bind)到用户控件中的依赖属性并调用方法

c# - WPF调整字体大小与窗口比例

c# - XNA 在不增加分辨率的情况下调整窗口大小

c# - 格式化 asp :TextBox with thousand and decimal separators

c# - WPF TextFormatter 中最后一行的完全对齐

WPF:指针下的颜色