Проблема: я пытаюсь получить имя тега динамически созданного пользовательского элемента управления с помощью кнопки внутри созданного элемента управления. снимок экрана, чтобы понять
Я пробовал следующий код, чтобыполучить имя тега:
Private Sub DownloadViewDelClick(sender As Object, e As EventArgs)
Dim i As Integer = downloadContainer.Controls.Count - 1
While i >= 0
If downloadContainer.Controls(i).Tag = sender Then
MsgBox(downloadContainer.Controls(i).Tag)
End If
i -= 1
End While
End Sub
Следующий код для создания динамических элементов управления:
Sub create_download_list()
Dim counter As Integer = 0
Dim downloadview As New videoviewcontrol
For Each link As String In downloadList
AddHandler downloadview.btnDel.Click, AddressOf Me.DownloadViewDelClick
downloadview.Tag = "downloadview" & counter
downloadview.TextBox1.Text = link
downloadContainer.Controls.Add(downloadview)
counter += 1
Next
End Sub
Когда я запускаю приложение и нажимаю кнопку корзины на любом динамическом элементе управления, яполучить следующую ошибку:
System.InvalidCastException
HResult=0x80004002
Message=Overload resolution failed because no Public '=' can be called with these arguments:
'Public Shared Operator =(a As String, b As String) As Boolean':
Argument matching parameter 'b' cannot convert from 'Button' to 'String'.
Source=Microsoft.VisualBasic
StackTrace:
at Microsoft.VisualBasic.CompilerServices.OverloadResolution.ResolveOverloadedCall(String MethodName, List`1 Candidates, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, BindingFlags LookupFlags, Boolean ReportErrors, ResolutionFailure& Failure)
at Microsoft.VisualBasic.CompilerServices.Operators.ResolveUserDefinedOperator(UserDefinedOperator Op, Object[] Arguments, Boolean ReportErrors)
at Microsoft.VisualBasic.CompilerServices.Operators.InvokeObjectUserDefinedOperator(UserDefinedOperator Op, Object[] Arguments)
at Microsoft.VisualBasic.CompilerServices.Operators.InvokeUserDefinedOperator(UserDefinedOperator Op, Object[] Arguments)
at Microsoft.VisualBasic.CompilerServices.Operators.ConditionalCompareObjectEqual(Object Left, Object Right, Boolean TextCompare)
at Bhavesh_YouTube_Downloader.mainWindow.DownloadViewDelClick(Object sender, EventArgs e) in C:\Users\TP043287\source\repos\Bhavesh YouTube Downloader\Bhavesh YouTube Downloader\mainWindow.vb:line 28
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
at Bhavesh_YouTube_Downloader.My.MyApplication.Main(String[] Args) in :line 81
Ниже приведено значение $ исключение на вкладке 'locals' в окне выходной трассировки:
+ $exception {"Overload resolution failed because no Public '=' can be called with these arguments:" & vbCrLf & " 'Public Shared Operator =(a As String, b As String) As Boolean':" & vbCrLf & " Argument matching parameter 'b' cannot convert from 'Button' to 'String'."} System.InvalidCastException
Я пытался понять эту проблему, но исключенияПриведенное выше значение означает, что кнопка «b» не может быть преобразована в строку, и у меня нигде нет кнопки с именем «b».Буду признателен за решение.Извините за вопрос нуб .. Спасибо!