相关疑难解决方法(0)

实现WPF TextBoxes的验证

我有3个TextBoxes(Id1,NameSalary).Id并且Salary应该包含整数,并且Name只应包含字符.我需要对TextBox进行验证,它应该在输入错误的字符或整数时显示错误.也可以只在没有代码隐藏的Xaml中完成吗?请帮我提供所需的代码

这是Xaml代码:

<TextBox Name="tb1" HorizontalAlignment="Left" Height="20" Margin="60,10,0,0" TextWrapping="NoWrap" Text="{Binding SelectedItem.Id,ElementName=dgsample}" VerticalAlignment="Top" Width="100" />
<TextBox Name="tb2" HorizontalAlignment="Left" Height="20" Margin="60,60,0,0" TextWrapping="NoWrap" Text="{Binding SelectedItem.Name, ElementName=dgsample}" VerticalAlignment="Top" Width="100"/>
<TextBox Name="tb3" HorizontalAlignment="Left" Height="20" Margin="60,110,0,0" TextWrapping="NoWrap" Text="{Binding SelectedItem.Salary, ElementName=dgsample}" VerticalAlignment="Top" Width="100"/>
Run Code Online (Sandbox Code Playgroud)

c# data-binding validation wpf xaml

36
推荐指数
4
解决办法
12万
查看次数

如何强制文本框只接受WPF中的数字?

我希望用户只输入数值TextBox.

我得到了这段代码:

private void txtType1_KeyPress(object sender, KeyPressEventArgs e)
{
     int isNumber = 0;
     e.Handled = !int.TryParse(e.KeyChar.ToString(), out isNumber);
}
Run Code Online (Sandbox Code Playgroud)

但我在使用WPF 时没有得到textbox_KeyPress事件e.KeyChar.

什么是WPF的解决方案?

Edit:

我做了一个解决方案!

private void txtName_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    CheckIsNumeric(e);
}

private void CheckIsNumeric(TextCompositionEventArgs e)
{
    int result;

    if(!(int.TryParse(e.Text, out result) || e.Text == "."))
    {
        e.Handled = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# wpf textbox

25
推荐指数
2
解决办法
4万
查看次数

创建仅接受数字的WPF TextBox

我想创建一个只接受特定范围内的数值的TextBox.实现此类TextBox的最佳方法是什么?

我想到了派生TextBox并覆盖TextProperty的验证和强制.但是,我不知道如何做到这一点,我知道通常不建议派生WPF控件.


编辑:
我需要的是一个非常基本的文本框,过滤掉所有不是数字的按键.实现它的最简单方法是处理TextBox.PreviewTextInput事件:

private void textBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    int result;
    if (!validateStringAsNumber(e.Text,out result,false))
    {
        e.Handled = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

(validateStringAsNumber是我主要使用Int.TryParse的函数)

一些建议的解决方案可能更好,但对于我需要的简单功能,这个解决方案是最容易和最快的,同时足以满足我的需求.

c# wpf textbox

20
推荐指数
2
解决办法
7万
查看次数

仅允许WPF文本框中的数字输入

我想验证用户输入以确保它们是整数.我该怎么做?我想到使用IDataErrorInfo哪种似乎是在WPF中进行验证的"正确"方法.所以我尝试在我的ViewModel中实现它.

但事情是我的文本框绑定到一个整数字段,并且没有任何需要验证是否int是一个int.我注意到WPF会自动在文本框周围添加一个红色边框,以通知用户错误.基础属性不会更改为无效值.但我想通知用户这个.我该怎么做?

c# validation wpf mvvm

13
推荐指数
3
解决办法
5万
查看次数

如何将textbox.text转换为int或者仅用于int输入?

如何将TextBox转换为int或WPF中是否只有一个仅支持数字的框?

c# validation wpf textbox input

6
推荐指数
1
解决办法
2万
查看次数

C#中的数字文本框 - WPF

我想在WPF中创建一个只接受数字的文本框...我已经重新申请并且人们说使用按键事件或屏蔽文本框,但它们是在Windows窗体中...

c# wpf textbox numbers

6
推荐指数
1
解决办法
5万
查看次数

通过编码表示约束TextBox中Text的长度

我有一个TextBoxWPF.我想限制文本的长度TextBox.有一种简单的方法可以限制属性的字符数MaxLength.

在我的用例中,我需要限制文本而不是字符数,而是限制给定编码中文本的二进制表示的长度.由于德国人使用的程序有一些变音符号,它消耗两个字节.

我已经有一个方法,检查给定的字符串是否适合给定的长度:

public bool IsInLength(string text, int maxLength, Encoding encoding)
{
    return encoding.GetByteCount(text) < maxLength;
}
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何以某种方式将此功能绑定到文本框,用户不可能输入太多字符来超过最大字节长度.

没有EventHandler的解决方案是首选,因为TextBox位于DataTemplate中.

c# wpf xaml textbox maxlength

6
推荐指数
1
解决办法
579
查看次数

在 WPF 中,PreviewTextInput 总是只给出一个字符吗?

PreviewTextInput在 WPF 中处理TextBox的事件时,事件参数 ( TextCompositionEventArgs)的 Text 属性是否可以包含通过键盘输入的最后一个字符以外的字符?

我对它进行了彻底的测试,它似乎只包含最后一个按键的单个字符值。但是,我可能遗漏了一些明显的东西,因为它的类型是String而不是Char.

c# wpf

4
推荐指数
1
解决办法
3573
查看次数

WPF仅限数字TextBox - 使用事件或命令处理它?

我试图创建一个TextBox只允许数字字符和小数点.我在编写代码时不需要帮助,但是在概念上.我MVVM用来设计WPF应用程序,我不确定是使用事件还是事件命令.

我已经阅读了几个关于这个主题的不同观点:

  • (我发现这有点极端,有些人称之为"适得其反",但它坚持"纯度" MVVM):永远不会有任何代码View.要防止这种情况,请使用MVVM Light Library.简而言之,将事件转换为命令,以便可以控制所有内容ViewModel.
  • (第二个论点并不支持(可能过度)"纯度" MVVM):并非一切都必须在处理中,ViewModel并且可以创建Events来处理某些UI要求.

由于简单性,我更倾向于第二种选择,正如我之前所说,第一种选择似乎有点极端.在我的具体情况下(仅创建一个数字TextBox),大多数人会更喜欢上述选项中的任何一个或我没有发现的选项吗?

wpf mvvm mvvm-light

2
推荐指数
1
解决办法
2047
查看次数

如何使文本框仅接受货币格式输入?

在此输入图像描述

这是该程序的屏幕截图.如你所见,我把输出格式设为我想要的样子.我用过这段代码: <DataGridTextColumn Header="Price" Binding="{Binding Path=Price, StringFormat=C, ConverterCulture='de-DE'}"/>

如何使文本框接受仅作为输入数字作为货币格式,或如何在键入时使其自动形成?我尝试了几个我在这里和那里找到的代码,但它没有用.希望有人可以帮助我并给我一些详细的信息.数据必须保存在SQL Server数据库中,到目前为止我使用的是LINQ.

c# validation wpf

2
推荐指数
1
解决办法
7505
查看次数

仅包含数字的文本框

我需要创建一个仅包含数字的TextBox,但是我做不到。我试过了:InputScope =“ Numbers”,但这仅适用于Mobile。我也尝试过TextChanging这个:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "[^0-9]"))
    {

        textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# xaml uwp

2
推荐指数
1
解决办法
2352
查看次数

在c#上获取文本框的值

我正在研究一个wpf应用程序,我想得到文本框的值我想使用KeyDown和KeyPress来检查文本是否是一个数值但是当我写KeyPress时,编译器强调了这一点,所以我不能使用它.

private void sb_KeyDown_1(object sender, System.Windows.Input.KeyEventArgs e)
    {
        nonNumberEntered = false;

        // Determine whether the keystroke is a number from the top of the keyboard.
        if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
        {
            // Determine whether the keystroke is a number from the keypad.
            if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
            {
                // Determine whether the keystroke is a backspace.
                if (e.KeyCode != Keys.Back)
                {
                    // A non-numerical keystroke was pressed.
                    // Set the flag to true and …
Run Code Online (Sandbox Code Playgroud)

c# wpf textbox

1
推荐指数
1
解决办法
4641
查看次数

C# WPF 如何在文本框中仅使用数值

我使用了一个 WPF 应用程序,我只想在文本框中允许数字。在 WindowsForm 应用程序中,我会知道我必须如何制作它。
不幸的是,WPF 中没有 KeyPress,并且“代码”也不再起作用。

它是如何正确的,事件是什么?


在这里您可以看到在 Windows 窗体中工作的旧代码:

private void tbKreisdurchmesser_KeyPress(object sender, KeyEventArgs e)
{
    if (char.IsNumber(e.Key) || e.KeyChar==".")
    {

    }
    else
    {
        e.Handled = e.KeyChar != (char)Keys.Back;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# wpf events numeric

0
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×12

wpf ×12

textbox ×6

validation ×4

xaml ×3

mvvm ×2

.net ×1

data-binding ×1

events ×1

input ×1

maxlength ×1

mvvm-light ×1

numbers ×1

numeric ×1

uwp ×1