1

VB.NET でプラスチック カード印刷プログラムを作成しています。主な形はカードのデザインです。

実行時に Panel コントロールにラベルを作成します。ユーザーは、アクティブなコントロールである間、移動、編集、サイズ変更などを行うことができます。いくつかのラベルを作成すると、選択したラベルを編集用に変更できません。

コントロールが作成されたときにコントロールのリストを含むコンボボックスを追加し、for ループを使用してコントロールを見つけてアクティブなコントロールにしようとしましたが、これは実際にはユーザーフレンドリーではありません。

マウスを使用してパネル内の別のラベルを選択するより賢い方法はありますか?

ありがとう、ブルース

4

2 に答える 2

0

フォームにパネルを追加して、これを試してください。

Public Class Form1

  Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    For i As Integer = 0 To 4
      Dim lbl As New Label
      AddHandler lbl.Click, AddressOf lbl_Click
      Panel1.Controls.Add(lbl)
      lbl.Top = 30 * i
      lbl.Text = "Hello!"
    Next
  End Sub

  Private Sub lbl_Click(sender As System.Object, e As System.EventArgs)
    Dim lbl As Label = DirectCast(sender, Label)
    lbl.Font = New Font(System.Drawing.FontFamily.GenericMonospace, 12)
  End Sub
End Class

ラベルをクリックすると、ラベルの外観が変わるはずです。

于 2012-10-10T00:12:35.913 に答える
0

私はSSSの答えが好きですが、Private Subイベントハンドラーの作成を避け、代わりにインラインラムダを使用します:

For i As Integer = 0 To 4
  Dim lbl As New Label
  AddHandler lbl.Click,
    Sub (s, e)
        lbl.Font = New Font(FontFamily.GenericMonospace, 12)
    End Sub
  Panel1.Controls.Add(lbl)
  lbl.Top = 30 * i
  lbl.Text = "Hello!"
Next
于 2012-10-10T00:40:03.963 に答える