PDA

View Full Version : گفتگو: نمایش آدرس کلیدهای رجیستری در AutoComplete از TextBox



ROSTAM2
جمعه 27 آبان 1401, 20:19 عصر
با سلام.
من برای اضافه کردن آدرس کلیدهای رجیستری در AutoComplete از TextBox و در رویداد KeyPress این دستور رو نوشتم:

154230


Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
Dim kEYsTR As String = ""
Dim Expr$ = ""
Try
Select Case e.KeyChar
Case ""
kEYsTR = Me.TextBox1.Text
Me.TextBox1.Enabled = False
With Key.OpenSubKey(kEYsTR, RegistryKeyPermissionCheck.ReadSubTree, Security.AccessControl.RegistryRights.FullControl)
For Each Key As String In .GetSubKeyNames
Expr = String.Format("{0}\{1}", kEYsTR, Key)
If Me.TextBox1.AutoCompleteCustomSource.Contains(Expr ) = True Then Exit For
Me.TextBox1.AutoCompleteCustomSource.Add(Expr)
NextFor:
Next
End With
Me.TextBox1.Enabled = True
Me.TextBox1.Focus()
Me.TextBox1.Text = Me.TextBox1.Text.Insert(Me.TextBox1.TextLength, "")
Me.TextBox1.SelectionStart = Me.TextBox1.TextLength
End Select
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub


آیا راه حل بهتر و ساده تری هم هست برای لیست شدن کلید های رجیستری در AutoComplete?!

ROSTAM2
جمعه 27 آبان 1401, 21:08 عصر
فرمی که این TextBox توی اون قرارداره یک خصوصیت RegistryHive داره که باید قبل از Load در پنجره Owner مقدار دهی بشه:

Private RegistryHiveValue As RegistryHive
Public Property RegistryHive() As RegistryHive
Get
Return RegistryHiveValue
End Get
Set(ByVal value As RegistryHive)
RegistryHiveValue = value
End Set
End Property


و برای کلید های اولیه از RegistryHive و مقدار دهی به متغیر Key که یک RegistryKey هست:

Dim Key As RegistryKey = Nothing
Private Sub StringTableDialog_Load(sender As Object, e As EventArgs) Handles Me.Load
Select Case Me.RegistryHive
Case RegistryHive.ClassesRoot
Key = Registry.ClassesRoot
Case RegistryHive.CurrentConfig
Key = Registry.CurrentConfig
Case RegistryHive.CurrentUser
Key = Registry.CurrentUser
Case RegistryHive.LocalMachine
Key = Registry.LocalMachine
Case RegistryHive.Users
Key = Registry.Users
End Select
Try
Me.TextBox1.ReadOnly = True
With Key
If Me.TextBox1.AutoCompleteCustomSource.Count = 0 Then
Me.TextBox1.AutoCompleteCustomSource.AddRange(.Get SubKeyNames)
End If
End With
Me.TextBox1.ReadOnly = False
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub