Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在UI控件中存储值,而不是在单独的变量中存储值?_Vb.net_Winforms - Fatal编程技术网

Vb.net 在UI控件中存储值,而不是在单独的变量中存储值?

Vb.net 在UI控件中存储值,而不是在单独的变量中存储值?,vb.net,winforms,Vb.net,Winforms,我可以知道在VB.NET中为控件创建变量的好处吗 例如: 我使用TextBox.Text访问TextBox值 我声明了一个变量来存储文本框的值。然后,我通过变量访问该值 哪种方法更好、更灵活?两种方法都有效。我个人倾向于后一种情况(独立变量): 有些人不赞成使用文本框等控件作为保存业务数据的单一位置。在实践中,如果在访问值(将字符串表示形式转换为对象)或在显示值时格式化值(将对象转换为字符串表示形式),必须首先解析该值,则这一问题尤其严重。在这种情况下,我将决定将实际值与控件分开存储,这样所有解

我可以知道在VB.NET中为控件创建变量的好处吗

例如:

  • 我使用
    TextBox.Text
    访问
    TextBox

  • 我声明了一个变量来存储
    文本框的值。然后,我通过变量访问该值


  • 哪种方法更好、更灵活?

    两种方法都有效。我个人倾向于后一种情况(独立变量):

    有些人不赞成使用
    文本框等控件作为保存业务数据的单一位置。在实践中,如果在访问值(将字符串表示形式转换为对象)或在显示值时格式化值(将对象转换为字符串表示形式),必须首先解析该值,则这一问题尤其严重。在这种情况下,我将决定将实际值与控件分开存储,这样所有解析和格式化逻辑都可以集中到一个地方,而不必在整个代码库中重复


    另一方面,将值存储在单独的变量中会引入保持该变量与控件同步的需要。这正是有益的。我假设您的问题是关于Windows窗体的,在Windows窗体中,数据绑定有些有限(但通常足够)。但是,如果您的UI基于WPF或Silverlight,那么数据绑定的功能会更强大(例如,它可以通过
    IValueConverter
    自动解析/格式化),并且可以为您节省很多麻烦。(如果您发现数据绑定太复杂,您可以始终手动完成相同的工作,尽管这将意味着订阅大量
    …已更改的
    事件。)

    我将使用
    文本框。标记
    property@0699例如我想那是一个可行的办法。在维护期间,它的问题通常会变得很明显,特别是当原始编码人员以外的人接管维护时:
    标记
    属性没有预定义的固定含义,它可以用于任何和所有目的。因此,无论谁查看您的代码,都必须根据类型转换和上下文猜测可能使用了什么
    Tag
    。类似的方法是从例如
    TextBox
    派生并添加一个正确键入的单一用途属性,该属性的名称更容易解释。谢谢你的解释,stakx,我想我理解了。例如,通过TextBox.Text获取的每个值都属于一个字符串,这意味着如果需要将该值用于计算,则需要进行转换。但是,通过使用变量,我可以使用一些事件(如TextChanged event)尝试将值解析为特定格式,并在出现文本更改以进行计算时更新变量。因此,在将来,当我需要进行计算时,我只需要使用变量,而不是再次将TextBox.Text转换为数值。