指定windows窗体文本字段上的数据类型

本文关键字:数据类型 字段 文本 windows 窗体 指定 | 更新日期: 2023-09-27 17:54:23

我是Visual Studio(2010)的初学者,我想从表单到后端接受一些数据,比如Integer或任何其他类的对象,而不是手动进行转换的头痛(如果不可能的话,我将不得不学习)。

Textbox1。文本总是返回字符串,而我希望它作为Textbox1。类名可以自动转换。

指定windows窗体文本字段上的数据类型

您将需要使用转换,您没有选择。你所能做的就是扩展文本框,并在其中编写你的转换器。很可能在转换失败的情况下传递一个默认值

例如:

public static class Extensions
{
    public static int TextAsInt(this TextBox txt, int defaultValue)
    {
        var result = 0;
        if (!Int32.TryParse(txt.Text, out result))
        {
            result = defaultValue;
        }
        return result;
    }
}

,然后你可以这样使用:

int result = Textbox1.TextAsInt(50);

如果转换失败,返回的值将是50

话虽如此,但要使这样的扩展可重用,最明智的方法是扩展字符串对象,而不是文本框。因此,它将被称为Textbox1.Text.TextAsInt(50);

在winforms中常见的做法是通过自制增强控件,以下是我所使用的(剪切版本):

[System.ComponentModel.DesignerCategory("Code")]
public class MyTextBox : TextBox
{
    [Browsable(false)]
    public int AsInt
    {
        get
        {
            int result;
            int.TryParse(Text, out result);
            return result;
        }
    }
    [Browsable(false)]
    public bool IsIntOk
    {
        get
        {
            int result;
            return int.TryParse(Text, out result);
        }
    }
    protected override void OnTextChanged(EventArgs e)
    {
        ForeColor = IsIntOk ? SystemColors.WindowText : Color.Red;
        base.OnTextChanged(e);
    }
}