获取C#中文本框的值

10 浏览
0 Comments

获取C#中文本框的值

我正在开发一个WPF应用程序,我想获取文本框的值,我想使用KeyDown和KeyPress来检查文本是否为数字值,但是当我写KeyPress时,编译器会将属性下划线标出,所以我无法使用它。

private void sb_KeyDown_1(object sender, System.Windows.Input.KeyEventArgs e)
    {
        nonNumberEntered = false;
        // 判断按键是否为键盘上方的数字键。
        if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
        {
            // 判断按键是否为小键盘上的数字键。
            if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
            {
                // 判断按键是否为退格键。
                if (e.KeyCode != Keys.Back)
                {
                    // 按下了非数字键。
                    // 将标志设置为true,并在KeyPress事件中进行评估。
                    nonNumberEntered = true;
                }
            }
        }
        // 如果按下了Shift键,则不是数字。
        if (Control.ModifierKeys == Keys.Shift)
        {
            nonNumberEntered = true;
        }
    }

同时还将e.KeyCode和e.KeyNumPad0等标出。

我应该怎么办?

0
0 Comments

问题的原因是在C#中获取文本框的值。解决方法是将文本框的Text属性绑定到支持变化通知的公共字符串属性上,并将绑定模式设置为TwoWay,并将UpdateSourceTrigger设置为PropertyChanged。这个字符串属性通常是DataContext中的ViewModel。通过这样的设置,每当文本框的文本发生变化时(每次按键时),就可以调用ViewModel中的方法,并在其中进行文本框值的验证。

0
0 Comments

问题原因:该问题的出现是因为作者使用了错误的方法来获取文本框的值,并且没有正确设置数据绑定。

解决方法:要获取文本框的值,可以使用数据绑定来实现。首先,在视图模型上创建一个与文本框绑定的属性,然后在XAML中设置数据绑定。通过设置UpdateSourceTrigger属性,可以在每次字符更改时更新绑定的值。此外,如果需要进行验证,可以参考MSDN上关于WPF验证的文章,并查看StackOverflow上的相关问题。

以下是解决该问题所需的代码示例:

public class MyViewModel : INotifyPropertyChanged
{
    private String myTextValue;
    public String MyTextValue
    {
        get { return myTextValue; }
        set
        {
            myTextValue = value;
            OnPropertyChanged("MyTextValue");
        }
    }
    // INotifyPropertyChanged implementation goes here
}
public partial class MainWindow
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new MyViewModel();
    }
}

这段代码定义了一个名为`MyViewModel`的视图模型类,其中包含一个名为`MyTextValue`的字符串属性。在MainWindow的构造函数中,将DataContext设置为一个新的MyViewModel实例。

通过使用上述代码和XAML中提供的绑定,你可以轻松地获取文本框的值。无需使用按钮或其他方法,只需在视图模型中的属性中获取即可。

需要注意的是,在Windows 8应用程序中,需要将Mode属性设置为"TwoWay"才能实现自动更新。另外,如果需要进行验证,可能需要使用一些方法来验证输入的值,具体实现可以参考提供的链接。

通过正确设置数据绑定,你可以轻松地获取文本框的值,无需使用按钮或其他方法。通过使用视图模型类和数据绑定,你可以实现WPF开发的最佳实践。记住,WPF和WinForms是不同的,尝试以相同的方式处理问题可能会导致困难。

0