65.9K
CodeProject 正在变化。 阅读更多。
Home

开发行控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.39/5 (10投票s)

2007年5月24日

CPOL

2分钟阅读

viewsIcon

35305

downloadIcon

1043

这是一个接受起始点和结束点对象并在这两者之间绘制直线的控件

Screenshot - Snapshot.jpg

引言

此代码是用于 .NET 应用程序的线条控件。 它与使用 drawline 方法绘制的普通线条的区别在于,此控件允许您将线条用作控件。 您可以向其使用上下文菜单,可以检测是否单击了该线条。 此外,您不必担心线条的位置,因为它会为您计算所有内容。 您所需要做的就是在 Form_Paint 事件中刷新它。

该控件具有多个属性。 您可以更改线条的颜色、宽度和箭头样式。 您还可以使线条的末端跟随鼠标光标。

Using the Code

无需查看线条控件代码,因为它包含所有内容,您无需编辑它(除非您想添加更多功能)。 要在您的代码中使用线条控件,您只需将 *.dll 文件导入到您的项目中并开始使用代码。

在压缩文件中找到的示例中,您可以看到我们可以通过首先单击一个按钮来添加一条线,该按钮执行以下代码

If AddLineFlag = True Then
    L.EndObject = sender
    AddLineFlag = False
    Exit Sub
End If
L = New LineControl.Line
L.ContextMenuStrip = Me.ContextMenuStrip1
L.StartObject = sender
L.UseCursorAsEndObject = True
Me.Controls.Add(L)
AddLineFlag = True

如该代码所示,我们首先检查是否已经有一条我们需要添加的线条。 如果没有线条,我们创建线条控件,然后为其分配上下文菜单,并将起始对象设置为被单击的按钮,线条的末端应跟随鼠标。 在设置完所有属性后,我们将控件添加到窗体并将标志设置为 true

Private Sub ContextMenuStrip1_Opening_
    (ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) _
    Handles ContextMenuStrip1.Opening
    Dim SenderLine As LineControl.Line = sender.SourceControl
    Me.ToolStripTextBox1.Text = SenderLine.LineWidth
    Me.ToolStripMenuItem2.Checked = SenderLine.IsFlashing
End Sub

Private Sub ToolStripTextBox1_TextChanged(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles ToolStripTextBox1.TextChanged
    If Me.ToolStripTextBox1.Text = "" Then
        Exit Sub
    End If
    If Me.ToolStripTextBox1.Text > 0 And Me.ToolStripTextBox1.Text <= 9 Then
        Dim SenderLine As LineControl.Line = sender.OwnerItem.Owner.SourceControl
        SenderLine.LineWidth = Me.ToolStripTextBox1.Text
    End If
End Sub

Private Sub ToolStripComboBox1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles ToolStripComboBox1.Click
    If Not TypeOf sender.owner.sourcecontrol Is LineControl.Line Then
        Exit Sub
    End If
    Dim SenderLine As LineControl.Line = sender.Owner.SourceControl
    Dim R As New Random()
    SenderLine.LineColor = Color.FromArgb(R.Next_
        (0, 255), R.Next(0, 255), R.Next(0, 255))
End Sub

Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles ToolStripMenuItem2.Click
    If Not TypeOf sender.owner.sourcecontrol Is LineControl.Line Then
        Exit Sub
    End If
    Dim SenderLine As LineControl.Line = sender.Owner.SourceControl
    If Me.ToolStripMenuItem2.Checked = False Then
        SenderLine.StartFlashLine(Color.Red)
        Me.ToolStripMenuItem2.Checked = True
    Else
        SenderLine.EndFlashLine()
        Me.ToolStripMenuItem2.Checked = False
    End If
End Sub

前面的函数用于使用线条的属性。 第一个函数是设置上下文菜单项以反映单击的线条的当前属性。 第二个函数是更改线条的宽度。 第三个函数是为线条选择随机颜色。 最后,最后一个函数是启动或停止线条闪烁。 我需要此属性,因为我开发此控件的项目必须以某种方式向用户发出警报,这是最好的方法。

关注点

这是我开发的第一个完整的控件。 之前,我只是编写一个 Hello World 类型的控件。 此外,这是我在这里发表的第一篇文章,希望您喜欢我的作品。

历史

  • 2007年5月24日:控件的第一个版本
© . All rights reserved.