Я пытаюсь получить первые 6 или 7 символов объекта. Этот объект имеет имя объекта Panel, и я хочу передать эти символы другой переменной для работы с ними.
Это мой код.
Dim p1Name
Dim paParent
Dim clickedPanel
Private Sub ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem.Click
clickedPanel = DirectCast(DirectCast(DirectCast(sender, ToolStripMenuItem).Owner, ContextMenuStrip).SourceControl, Panel)
p1Name = clickedPanel.Name
If Len(p1Name) = 7 Then
paParent = clickedPanel.name
Else
paParent = clickedPanel.name.Substring(0, 7)
End If
End Sub
Private Sub SwPan()
Dim varE As String = paParent
Dim PanelParent As Panel = paParent
Dim p3 = DirectCast(PanelParent.Controls.Find(p1Name, True).FirstOrDefault(), Panel)
If p3 Is Nothing Then Throw New ArgumentException("index1")
end sub
Когда я пытаюсь запустить, отправьте следующее сообщение об ошибке.
index and length must refer to a location within the string parameter name length vb.net
Пожалуйста, не могли бы вы помочь мне исправить или направить меня?
Заранее спасибо.
Обновить я делаю следующее.
Это чтобы получить (вырезать)
Private Sub ToolStripMenuItem3_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem3.Click
clickedPanel = DirectCast(DirectCast(DirectCast(sender, ToolStripMenuItem).Owner, ContextMenuStrip).SourceControl, Panel)
p1Name = clickedPanel.Name
paParent = clickedPanel.parent
End Sub
это сделать (вставить)
Private Sub ToolStripMenuItem4_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem4.Click
clickedPanel = DirectCast(DirectCast(DirectCast(sender, ToolStripMenuItem).Owner, ContextMenuStrip).SourceControl, Panel)
p2Name = clickedPanel.Name
pbParent = clickedPanel.parent
Call Swap()
End Sub
Это для смены панелей
Private Sub Swap()
'' build the panel names
Dim varA As String = p1Name.ToString
Dim varC As String = p2Name.ToString
Dim PanelParent As Panel = paParent
Dim PanelParent_b As Panel = pbParent
Dim p3 = DirectCast(PanelParent.Controls.Find(p1Name, True).FirstOrDefault(), Panel)
If p3 Is Nothing Then Throw New ArgumentException("index1")
Dim p4 = DirectCast(PanelParent_b.Controls.Find(p2Name, True).FirstOrDefault(), Panel)
If p4 Is Nothing Then Throw New ArgumentException("index2")
Dim positionA As Integer = Panel1.AutoScrollPosition.X
Panel1.AutoScroll = False
Dim temp = p4.Location
p4.Location = p3.Location
p3.Location = temp
Panel1.AutoScroll = True
Panel1.AutoScrollPosition = New Point(positionA, Panel1.VerticalScroll.Maximum)
End Sub