获取对象的前 6 或 7 个(条件)字符



我试图获取对象的前 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

美好的一天。

很抱歉耽搁了,但我找到了这个问题的解决方案。

附加更新的代码。

谢谢大家的努力和时间。

问候

Private Sub Swap()
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
Dim temp_b = p3.Location
With p3
.Parent = PanelParent_b
.Location = temp
End With
With p4
.Parent = PanelParent
.Location = temp_b
End With
Panel1.AutoScroll = True
Panel1.AutoScrollPosition = New Point(positionA, Panel1.VerticalScroll.Maximum)
End Sub

最新更新