我正在使用Visual Basic和DevExpress WinForm,我在下面做了一个简单的例子来显示我的问题。在代码中是一个带有SimpleButton的表单。单击此按钮显示XtraDialog用户控件。用户控件有一个文本框。
我想做的,是得到这个文本框的输入用户控制,进入表单,而不是使用模块或sql表,但像DevExpress输入框,通过Ok按钮。
使用下面的例子,我是DevExpress的新手,到目前为止仍然成功地将DevExpress实现到我的代码中
Imports DevExpress.XtraEditors
Imports DevExpress.XtraLayout
Imports System
Imports System.Windows.Forms
Public Class XtraDialog1
Inherits Form
Public Sub New()
InitializeComponent()
AddHandler Me.SimpleButton1.Click, AddressOf simpleButton1_Click
End Sub
' Button Action
Private Sub simpleButton1_Click(ByVal sender As Object, ByVal e As EventArgs)
' Declare User Control
Dim myControl As New ucExample()
' Show Popup
If DevExpress.XtraEditors.XtraDialog.Show(myControl, "Title", MessageBoxButtons.OKCancel) = DialogResult.OK Then
' do something
End If
End Sub
End Class
用户控件
Public Class ucExample
Dim result As String
Public Sub New()
result = TextEdit1.Text
End Sub
End Class
我对DX的东西有点生疏了,但很确定您需要做的就是更改访问修饰符并使result公开。我建议阅读访问修饰符,因为这个想法是你应该尽可能地保持它的限制性。https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/declared-elements/access-levels。
我将使用一个只读属性,你可能想玩一点关于它在堆栈中的位置(即在用户控件,或XtraDialog)。在Form和UserControl设计器中的组件也有一个Modifier属性,您可能想要熟悉一下。
将UC更改为:
Public Class ucExample
Public ReadOnly Property result As String
Get
Return TextEdit1.Text
End Get
End Property
Public Sub New()
result = TextEdit1.Text
End Sub
End Class
然后我还认为你需要稍微改变一下对话框的用法来获得结果。
Dim dlg As New DevExpress.XtraEditors.XtraDialog()
If dlg.Show(myControl, "Title", MessageBoxButtons.OKCancel) = DialogResult.OK Then
Dim result As String = dlg.result
End If
现在无法自己测试,因为现在无法访问DX,但希望这应该足以让你朝着正确的方向前进
经过一些研究和DevExpressUserSupport的帮助,这里是一个工作版本
形式Public Class XtraDialog2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim myControl As New ucExample()
If DevExpress.XtraEditors.XtraDialog.Show(myControl, "Title", MessageBoxButtons.OKCancel) = DialogResult.OK Then
Dim result As String = myControl.result
MsgBox(result)
End If
End Sub
End Class
用户控制
Public Class ucExample
Public ReadOnly Property result As String
Get
Return TextEdit1.Text
End Get
End Property
结束课