別のボタンの上にVB.NET描画ボタン

カペラン

別のボタンの上にボタンを描画することは可能ですか(2番目のボタンがあり、最初のボタンの左右の位置を基準にしてボタンを移動する以外に)?メインボタンの隅に小さなオプションの疑問符(ボタン)を表示して、クリックするとさまざまなアクションを実行できるようにしようとしています。

それ以外の場合は、ボタンの上に疑問符を描画し、マウスのOnClickの相対位置を取得し、HasLinkプロパティがtrueで、マウスが特定の領域にある場合にアクションを実行するというアイデアをいじっていました。

これらも動的に作成されます。

Public Class clsButton

Inherits Button
Private Property HasLink As Boolean = False

Public Sub New(ByVal Image As Image, ByVal ShowLink As Boolean)

    Me.BackgroundImage = Image
    Me.BackgroundImageLayout = ImageLayout.Center
    Me.Height = 100
    Me.Width = 200
    If ShowLink Then DrawLink()

End Sub

Public Sub DrawLink()

    Dim bmpBitmap As New Bitmap(Me.Width, Me.Height)
    Dim graGraphic As Graphics = Graphics.FromImage(bmpBitmap)

    Dim i As New Bitmap("c:\temp\question_mark.png")
    graGraphic.DrawImage(i, (Me.Width - i.Width) - 5, 5)

    Me.Image = bmpBitmap

End Sub

Protected Overrides Sub OnClick(e As EventArgs)
    MyBase.OnClick(e)
    Debug.WriteLine("X: " & MousePosition.X & " Y: " & MousePosition.Y)
    Debug.WriteLine(Me.PointToClient(MousePosition))
End Sub

End Class
ケクセマウ

それを上に描くのは良い考えであり、簡単に達成できると思います。全体の考え自体は議論の余地があるかもしれませんが、必ずしも悪いとは思いません。
これは、イベントフローを設定する方法の簡単な例です。

Public Class SpecialButton
    Inherits Button

    Private flagIsHovering As Boolean = False

    Private ReadOnly Property r As Rectangle
        Get
            Return New Rectangle(Me.Width - 20, 5, 15, 15)
        End Get
    End Property

    Public ReadOnly Property clickInSpecialArea(p As Point) As Boolean
        Get
            Return (Me.r.Contains(p))
        End Get
    End Property

    Private iconBG_normal As Color = Color.White
    Private iconBG_hover As Color = Color.DarkOrange

    Protected Overrides Sub OnPaint(pevent As System.Windows.Forms.PaintEventArgs)
        MyBase.OnPaint(pevent)

        With pevent.Graphics
            .FillRectangle(New SolidBrush(If(Me.flagIsHovering, iconBG_hover, iconBG_normal)), r)
            .DrawRectangle(Pens.Blue, r)
            .DrawString("?", New Font("Verdana", 8), Brushes.Blue, r.Location)
        End With
    End Sub

    Protected Overrides Sub OnMouseMove(mevent As System.Windows.Forms.MouseEventArgs)
        MyBase.OnMouseMove(mevent)

        Dim oldState As Boolean = Me.flagIsHovering
        Me.flagIsHovering = (r.Contains(mevent.Location))
        If oldState <> Me.flagIsHovering Then Me.Invalidate()
    End Sub

    Protected Overrides Sub OnMouseLeave(e As System.EventArgs)
        MyBase.OnMouseLeave(e)
        If Me.flagIsHovering Then
            Me.flagIsHovering = False
            Me.Invalidate()
        End If
    End Sub

End Class

フォームテストコード:

Public Class Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim ct As New SpecialButton
        ct.Text = "Text"
        ct.Location = New Point(200, 20)
        ct.Size = New Size(100, 30)
        Me.Controls.Add(ct)

        AddHandler ct.MouseClick, Sub(sender_ As Object, e_ As MouseEventArgs)
                                      MessageBox.Show(
                                          "Special click: " &
                                          DirectCast(sender_, SpecialButton).clickInSpecialArea(e_.Location).ToString)
                                  End Sub
    End Sub
End Class

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

AVPlayerの上にボタンを描画します

分類Dev

vuetifyでボタンを別のボタンの上に配置する方法

分類Dev

ボタンの描画の問題

分類Dev

画像ボタンの描画可能を取得

分類Dev

上隅にあるJava描画ボタンのアニメーション

分類Dev

コンボボックスにvb.netの設定データソース

分類Dev

(vb.net)別の形式のボタンをクリックしたときにsubを終了する方法は?

分類Dev

vb.netで別の形式のボタンを自動的にクリックします

分類Dev

pygameのウィンドウにボタンを描画する方法

分類Dev

ボタンの下に描画可能なアニメーション

分類Dev

ボタンを別のボタン内に配置する方法(java)

分類Dev

個別のDivボタン?

分類Dev

上の別のボタンに対してボタンを中央揃えにする方法

分類Dev

ボタンの描画可能な色を動的に変更する方法

分類Dev

Google Maps API v3は、ポリゴンを描画するときに元に戻すボタンの横に別のボタンを追加します

分類Dev

ボタン上のUWPCommunityToolkitDropShadowPanel

分類Dev

RecyclerViewの上にボタンを追加

分類Dev

1つのボタンでVB.net複数のStreamReaderとFileStream

分類Dev

vb.netのボタンを自動的に無効にする方法

分類Dev

別のボタンの背景をボタンの背景Xamarinに配置する

分類Dev

cssは、ある段落を上に、別の段落をボタンに配置します

分類Dev

cssは、ある段落を上に、別の段落をボタンに配置します

分類Dev

別のボタンのボタンonClickイベントを表示

分類Dev

TStringGridのセル内のボタンの描画と画像

分類Dev

VB6からVB.NETへの変換ボタンスタイル

分類Dev

実行時にボタンの位置を変更するVB.NET

分類Dev

ボタンクリックによるラベルのVB.net増分、

分類Dev

VB.NETのOutlookメールに投票ボタンを含める方法

分類Dev

データバインドされたコンボボックスVb.netに空の行を追加する

Related 関連記事

  1. 1

    AVPlayerの上にボタンを描画します

  2. 2

    vuetifyでボタンを別のボタンの上に配置する方法

  3. 3

    ボタンの描画の問題

  4. 4

    画像ボタンの描画可能を取得

  5. 5

    上隅にあるJava描画ボタンのアニメーション

  6. 6

    コンボボックスにvb.netの設定データソース

  7. 7

    (vb.net)別の形式のボタンをクリックしたときにsubを終了する方法は?

  8. 8

    vb.netで別の形式のボタンを自動的にクリックします

  9. 9

    pygameのウィンドウにボタンを描画する方法

  10. 10

    ボタンの下に描画可能なアニメーション

  11. 11

    ボタンを別のボタン内に配置する方法(java)

  12. 12

    個別のDivボタン?

  13. 13

    上の別のボタンに対してボタンを中央揃えにする方法

  14. 14

    ボタンの描画可能な色を動的に変更する方法

  15. 15

    Google Maps API v3は、ポリゴンを描画するときに元に戻すボタンの横に別のボタンを追加します

  16. 16

    ボタン上のUWPCommunityToolkitDropShadowPanel

  17. 17

    RecyclerViewの上にボタンを追加

  18. 18

    1つのボタンでVB.net複数のStreamReaderとFileStream

  19. 19

    vb.netのボタンを自動的に無効にする方法

  20. 20

    別のボタンの背景をボタンの背景Xamarinに配置する

  21. 21

    cssは、ある段落を上に、別の段落をボタンに配置します

  22. 22

    cssは、ある段落を上に、別の段落をボタンに配置します

  23. 23

    別のボタンのボタンonClickイベントを表示

  24. 24

    TStringGridのセル内のボタンの描画と画像

  25. 25

    VB6からVB.NETへの変換ボタンスタイル

  26. 26

    実行時にボタンの位置を変更するVB.NET

  27. 27

    ボタンクリックによるラベルのVB.net増分、

  28. 28

    VB.NETのOutlookメールに投票ボタンを含める方法

  29. 29

    データバインドされたコンボボックスVb.netに空の行を追加する

ホットタグ

アーカイブ