Vb.net 是否可以在visual basic.net windows窗体应用程序中的文本框周围创建虚线边框?

Vb.net 是否可以在visual basic.net windows窗体应用程序中的文本框周围创建虚线边框?,vb.net,textbox,Vb.net,Textbox,我一直在使用一个代码,它允许我在vb.net中的文本框周围画线,但这些线是实线。我想用虚线甚至虚线来修饰一下应用程序。有没有一种方法可以像在表单上那样在文本框周围画虚线?我当前使用的代码是as so Dim g As Graphics = e.Graphics Dim pen As New Pen(Color.Aqua, 2.0) Dim txtBox As Control For Each txtBox In Me.Controls If TypeOf (txtBox) Is

我一直在使用一个代码,它允许我在vb.net中的文本框周围画线,但这些线是实线。我想用虚线甚至虚线来修饰一下应用程序。有没有一种方法可以像在表单上那样在文本框周围画虚线?我当前使用的代码是as so

Dim g As Graphics = e.Graphics
Dim pen As New Pen(Color.Aqua, 2.0)
Dim txtBox As Control
  For Each txtBox In Me.Controls
      If TypeOf (txtBox) Is TextBox Then
          g.DrawRectangle(pen, New Rectangle(txtBox.Location, txtBox.Size))
      End If
  Next
pen.Dispose()
我还想提及的是,我能够在paint事件中使用此代码在表单周围获得一条虚线。它看起来真的很好,让它周围的文本框太我希望这是可能的

ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle,Color.Aqua, ButtonBorderStyle.Dashed)
编辑:我刚刚试过这段代码,它看起来像是在画虚线矩形,但它们并没有围绕我的文本框,所以不知道如何修复它

Dim txtBox As Control
  For Each txtBox In Me.Controls
    If TypeOf (txtBox) Is TextBox Then
      ControlPaint.DrawBorder(e.Graphics, txtBox.ClientRectangle, txtBox.ForeColor, ButtonBorderStyle.Dashed)
    End If
  Next
像这样

Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
    For Each txtBox As Control In Me.Controls
        If TypeOf (txtBox) Is TextBox Then
            Dim borderRectangle As Rectangle = New Rectangle(txtBox.Location, txtBox.Size)
            borderRectangle.Inflate(1, 1)
            ControlPaint.DrawBorder(e.Graphics, borderRectangle, txtBox.ForeColor, ButtonBorderStyle.Dashed)
        End If
    Next
End Sub

看见你可能还想看看。强烈建议您在将问题发布到StackExchange网络之前进行一些研究;我在不到一分钟的时间内通过谷歌搜索找到了这两个文本框。专家交换上的示例仅显示了执行一个文本框是可以执行循环并在表单上获取每个文本框的,因此我不必在每个文本框的每个绘制事件中都添加此代码。我确实发布了上面的代码,表明我正在尝试对所有文本框(而不仅仅是一个文本框)执行此操作。如果您可以在循环中执行此操作,您可以进行实验并发现自己。或者你可以自己做更多的研究。编程通常是一个隐喻性的过程,就像组装乐高积木一样;你的问题表明你丢失了一块砖头,我的回答告诉你在哪里可以找到那块砖头。如何将它们结合在一起取决于你,你需要了解如何做到这一点,真正把自己当成程序员。我不认为自己是程序员。当我需要一个程序来做一些简单的事情时,我这样做是为了好玩。我来这里之前搜索过谷歌,但没有找到我要找的东西。我确实觉得我的问题可能用不同的措辞。我对编码非常陌生,我很难自己想出这样的方法。我从例子中学习得更好。当我需要自己去做的时候,我的大脑工作不好。谢谢您的回复。@Joebbjr您需要将边界充气到比您想要绘制的控件大一点的大小。太棒了!我现在明白了。谢谢你,这正是我想要的。现在,如果我愿意的话,我可以用这样的方法在每个控件上创建边界。非常感谢!是否有理由将此代码与表单而不是文本框一起使用不会在表单上设置边框?我相信我知道为什么我会尝试为每个控件设置sub并为每个控件调用sub,我相信这与e as painteventargs有关,不允许向其发送多个控件或其他内容。我得把它弄得乱七八糟。你想在每次重新粉刷窗口时重新绘制边框。可以使用20个文本框。如果面板中有文本框…我认为它们不会循环。您必须创建一个循环来遍历面板,并在面板中查找文本框,或者将代码放入面板绘制事件中