在VB.NET中遍历Devexpres文本编辑控件
是否有人可以帮助在vb.net中的XTRAFORM中遍历DevExpress文本编辑控件 我实际上试图做的是通过使用EditValue和OldEditValue属性拦截FormClosing事件中的任何值更改 我需要告诉你,我的控件包含在XtraTab和XtraPanel容器中 以下是我尝试的:在VB.NET中遍历Devexpres文本编辑控件,vb.net,devexpress,userform,textedit,xtraeditors,Vb.net,Devexpress,Userform,Textedit,Xtraeditors,是否有人可以帮助在vb.net中的XTRAFORM中遍历DevExpress文本编辑控件 我实际上试图做的是通过使用EditValue和OldEditValue属性拦截FormClosing事件中的任何值更改 我需要告诉你,我的控件包含在XtraTab和XtraPanel容器中 以下是我尝试的: Public Function TextEditChangesOccured(frm As XtraForm) As Boolean Dim result As Boolean For
Public Function TextEditChangesOccured(frm As XtraForm) As Boolean
Dim result As Boolean
For Each ctrl As BaseEdit In frm.Controls
If TypeOf ctrl Is TextEdit Then
If ctrl.EditValue <> ctrl.OldEditValue Then
result = True
Else
result = False
End If
End If
Next
Return result
End Function
Private Sub MyXtraForm_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
If TextEditChangesOccured(Me) Then
DevExpress.XtraEditors.XtraMessageBox.Show("Changes have occured!", My.Application.Info.AssemblyName, MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub
公共函数TextEditChangesOccured(frm作为XtraForm)作为布尔值
将结果设置为布尔值
对于frm.控件中的每个ctrl As BaseEdit
如果ctrl的类型为TextEdit,则
如果ctrl.EditValue ctrl.OldEditValue,则
结果=真
其他的
结果=错误
如果结束
如果结束
下一个
返回结果
端函数
私有子MyXtraForm_FormClosing(发件人作为对象,e作为FormClosingEventArgs)处理MyBase.FormClosing
如果TextEditChanges治愈了(我),那么
DevExpress.XtraEditors.XtraMessageBox.Show(“已发生更改!”,My.Application.Info.AssemblyName,MessageBoxButtons.OK,MessageBoxIcon.Information)
如果结束
端接头
但它表示无法将XtraTab控件转换为TextEdit控件
非常感谢您的帮助。要使您的代码正常工作,只需按如下方式更改您的代码片段:
Public Function TextEditChangesOccured(container As Control) As Boolean
Dim result As Boolean
For Each ctrl As Control In container.Controls
Dim bEdit As BaseEdit = TryCast(ctrl, BaseEdit)
If bEdit IsNot Nothing Then
Dim tEdit As TextEdit = TryCast(ctrl, TextEdit)
If tEdit IsNot Nothing Then
result = result Or (bEdit.EditValue <> bEdit.OldEditValue)
End If
Else
result = result Or TextEditChangesOccured(ctrl)
End If
Next
Return result
End Function
啊哇!竖起大拇指!非常感谢你的帮助,德米特里,效果很好。我真的很感谢你的帮助。再次感谢。
Partial Public Class Form1
Inherits Form
Public Sub New()
InitializeComponent()
SubscribeTextEditValueChanged(Me)
End Sub
Private Sub SubscribeTextEditValueChanged(ByVal container As Control)
For Each ctrl As Control In container.Controls
Dim tEdit As TextEdit = TryCast(ctrl, TextEdit)
If tEdit IsNot Nothing Then
AddHandler tEdit.EditValueChanged, AddressOf tEdit_EditValueChanged
Else
SubscribeTextEditValueChanged(ctrl)
End If
Next ctrl
End Sub
Private IsEditValueChanged As Boolean
Private Sub tEdit_EditValueChanged(ByVal sender As Object, ByVal e As EventArgs)
IsEditValueChanged = True
End Sub
Protected Overrides Sub OnClosing(ByVal e As CancelEventArgs)
If IsEditValueChanged Then
' do some stuff
End If
MyBase.OnClosing(e)
End Sub
End Class