-
May 6th, 2017, 06:05 PM
#1
Thread Starter
New Member
Pass Button Name to Function
Hi,
I'm using the below code to clear a user attribute in Active Directory when a button is clicked. I have several of these buttons (1 each for title, department, address, city, state, zip, country, phone). I could just have the same code below for each of the 8 button clicks. However, I thought it might be cleaner, and reduce the amount of code, to pass the name of each button to a single sub routine, so you only need it once, not 8 times, and then use
Code:
dirEntryResults.Properties("btnName").Clear()
. However, I can't see if it's possible to pass the button name to a sub routine? Is this possible, and if so, how?
Code:
Private Sub ClearTitle_Click(sender As Object, e As EventArgs) Handles ClearTitle.Click
Dim ADName As String = GetLogonName()
Dim dirEntry As DirectoryEntry = GetDirectoryEntry()
Dim dirSearcher As DirectorySearcher = New DirectorySearcher(dirEntry)
dirSearcher.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=test.account))"
dirSearcher.SearchScope = SearchScope.Subtree
Dim searchResults As SearchResult = dirSearcher.FindOne()
If Not searchResults Is Nothing Then
Dim dirEntryResults As New DirectoryEntry(searchResults.Path)
dirEntryResults.Properties("title").Clear()
dirEntryResults.CommitChanges()
dirEntryResults.Close()
MsgBox("Attribute Cleared", MsgBoxStyle.OkOnly, "Success")
End If
dirEntry.Close()
End Sub
-
May 6th, 2017, 06:28 PM
#2
Re: Pass Button Name to Function
I think I just answered this at SO
Code:
Private Sub Clears_Click(sender As Object, e As EventArgs) Handles ClearTitle.Click, ClearAddress.Click, ClearCity.Click 'etc
Dim BTN_NAME As String = DirectCast(sender, Button).Name.ToLower.Replace("clear", "")
Dim ADName As String = GetLogonName()
Dim dirEntry As DirectoryEntry = GetDirectoryEntry()
Dim dirSearcher As DirectorySearcher = New DirectorySearcher(dirEntry)
dirSearcher.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=test.account))"
dirSearcher.SearchScope = SearchScope.Subtree
Dim searchResults As SearchResult = dirSearcher.FindOne()
If Not searchResults Is Nothing Then
Dim dirEntryResults As New DirectoryEntry(searchResults.Path)
dirEntryResults.Properties(BTN_NAME).Clear()
dirEntryResults.CommitChanges()
dirEntryResults.Close()
MsgBox("Attribute Cleared", MsgBoxStyle.OkOnly, "Success")
End If
dirEntry.Close()
End Sub
Something like this. Note that I am guessing at the actual names of the buttons, and using only one handler for all of the clicks.
-
May 6th, 2017, 06:43 PM
#3
Thread Starter
New Member
Re: Pass Button Name to Function
Yes, thank you for answering in both places. I usually ask in a few forums, as some are more active than others!
I'd found a few other posts after I posted my question, which suggested adding the
Code:
Dim btnName As String
or
Code:
Dim btnName as Button
but I was getting the error
Error 2 Value of type 'System.Windows.Forms.Button' cannot be converted to 'String'.
Adding the
Code:
DirectCast(sender, Button).Name
line that you suggested fixed it, and it now works! Full code below:
Code:
Private Sub ClearBtn_Click(sender As Object, e As EventArgs) Handles title.Click, physicalDeliveryOfficeName.Click, department.Click, telephoneNumber.Click, streetAddress.Click, st.Click, postalCode.Click, mobile.Click, l.Click, c.Click
Dim btnName As String = DirectCast(sender, Button).Name
Dim ADName As String = GetLogonName()
Dim dirEntry As DirectoryEntry = GetDirectoryEntry()
Dim dirSearcher As DirectorySearcher = New DirectorySearcher(dirEntry)
dirSearcher.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=" & ADName & "))"
dirSearcher.SearchScope = SearchScope.Subtree
Dim searchResults As SearchResult = dirSearcher.FindOne()
If Not searchResults Is Nothing Then
Dim dirEntryResults As New DirectoryEntry(searchResults.Path)
dirEntryResults.Properties(btnName).Clear()
dirEntryResults.CommitChanges()
dirEntryResults.Close()
MsgBox("Attribute Cleared", MsgBoxStyle.OkOnly, "Success")
Form1_Load(Me, New System.EventArgs)
End If
dirEntry.Close()
End Sub
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|