我有几个命名的文本框,其中包含我希望保存在文件中的值。我曾经能够通过引用像这样的另一个模块引用文本框来实现此操作。
owrite.Writeline(form1.textbox1.text)
使用WPF我无法弄清楚如何做到这一点。我可以在mainwindow.xaml.vb中使用此代码
进行操作。owrite.Writeline(me.textbox1.text)
,但是当我从另一个模块尝试时,我无法公开(查找)文本框。我可以从Mainwindow内部做到这一点,这是事实,但是我也想知道如何。
编辑:谢谢您的所有帮助。根据下面的一些建议,我使用以下内容来创建我的设置文档,从而从程序中的任何模块中都可以写出这些文档。正如我所说
Dim mainWin = Application.Current.Windows.OfType(Of MainWindow).FirstOrDefault()
Using oWrite As New System.IO.StreamWriter(AppPath & "SETTINGSUser Config.txt", False)
oWrite.WriteLine(mainWin.Text_ServerName.Text)
oWrite.WriteLine(mainWin.Text_DBName.Text)
oWrite.WriteLine(mainWin.Text_ServerUserName.Text)
oWrite.WriteLine(mainWin.Text_ServerPass.Text)
oWrite.WriteLine(mainWin.Text_StorageDriveLetter.Text)
oWrite.Close()
End Using
您可以使用x:fieldmodifier指令更改控制字段的修饰符,以便能够从任何其他类访问它:
<TextBox x:Name="textbox1" x:FieldModifier="public" />
X:fieldModifier: https://msdn.microsoft.com/en-us/library/aa970905(v = vs.110).aspx
另一个选项是在视图的代码范围类中定义属性,并通过此属性访问控件:
Class MainWindow
Public ReadOnly Property TheTextBox() As TextBox
Get
Return textbox1
End Get
End Property
End Class
在这两种情况下,您都需要获取对窗口的引用,然后才能访问其任何控件。例如,您可以使用application.current.windows Collection获取对打开窗口的引用:
Dim mainWindow As MainWindow = Application.Current.Windows.OfType(Of MainWindow).FirstOrDefault()
Dim s As String = mainWindow.TheTextBox.Text
只要您在背后的代码中命名,您就应该能够:
var data = MyTextBox.Text;
//Do whatever with your data.