Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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_Vb.net_Winforms_Software Design - Fatal编程技术网

使用窗体属性或控件值的VB.Net

使用窗体属性或控件值的VB.Net,vb.net,winforms,software-design,Vb.net,Winforms,Software Design,我一直在用VB.Net编写一个程序,它使用一个表单将信息传递给其他类,我对我当前的代码结构有一个问题。我个人不喜欢表单中的各种控件被公开给其他类随意更改,所以我更喜欢为类使用这些控件的只读属性来获取它们的信息。问题是,这些属性最终占用了表单类中的大量空间,我觉得这使它变得很难理解和阅读。关于这方面有什么标准/建议我可以遵循吗 为了帮助澄清,我宁愿使用,例如 MsgBox(MyForm.PartNumber) 'Or MsgBox(MyForm.PartType) 而不是 MsgBox(MyFo

我一直在用VB.Net编写一个程序,它使用一个表单将信息传递给其他类,我对我当前的代码结构有一个问题。我个人不喜欢表单中的各种控件被公开给其他类随意更改,所以我更喜欢为类使用这些控件的只读属性来获取它们的信息。问题是,这些属性最终占用了表单类中的大量空间,我觉得这使它变得很难理解和阅读。关于这方面有什么标准/建议我可以遵循吗

为了帮助澄清,我宁愿使用,例如

MsgBox(MyForm.PartNumber)
'Or
MsgBox(MyForm.PartType)
而不是

MsgBox(MyForm.PartNumberTextBox.Text)
'Or
MsgBox(MyForm.PartTypeComboBox.SelectedItem.ToString())
由于前一种属性看起来更好(IMO),而后一种属性可能会带来以下风险:

MyForm.PartNumberTextBox.Value = "Something else"

任何建议/回复都将不胜感激。

您可以在窗体上创建只读属性,这些属性是围绕控件中的值的包装:

Public ReadOnly Property PartNumber As String
   Get
      Return PartNumberTextBox.Text
   End Get
End Property
这样,您就可以访问表单外部的值,而不会有被修改的风险:

MsgBox(MyForm.PartNumber)

代码审查更适合回答您的问题如果您觉得公开表单控件属性的代码会使主代码文件变得混乱,您可以将其移动到同一文件或单独的文件中(类似于FormName.designer.vb)。您不必将操作的每个数据项塞进单个表单类中。将模型与视图分离是一种标准的编程范式。但不像在其他UI框架中那样在Winforms中强制执行。“你自己加吧!”白狼谢谢你的提示。我不知道那个网站,所以我一定会记得的。@TnTinMn我曾考虑使用分部类,但在其他地方我看到过分部类是否适合使用的争论(除了表单和它们的设计器分部类)。这是我进退两难的一部分。我可以创建所有这些属性,但是我的类大小是我想要添加的所有属性的两倍,这使得它更难阅读。我更多的是寻求平衡的方法。为了让它更具可读性,通常我在这些情况下所做的是将属性包装在一个区域“自定义属性”中。当您打开代码时,VisualStudio将折叠该区域,隐藏所有这些属性,除非您出于某种原因想要扩展它们。