0

ユーザーが拡大された画像フォームの任意の場所をクリックしてフォームを閉じ (考慮すべきオブジェクトが 3 つあります)、「frmPhone」と呼ばれる別のフォームに戻ることができるフォームを作成しました。フォームに実際の画像があります: "frmPhonePics" は、私がやろうとしていることを達成するために使用しているものです (ここに画像を挿入できませんでした。申し訳ありません)。大きな画像フォームを閉じるイベントを使用して、ユーザーがフォーム内のどこでも絶対に閉じることができるようにしますが、その方法がわかりません。これまでのコードは次のとおりです。

Private Sub frmPhonePics_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Click
    frmPhone.Show()
    Me.Hide()
End Sub
4

3 に答える 3

0

シングルクリックではなく、ダブルクリックを使用することを強くお勧めします。誤ったクリックが間違ったことをする可能性は非常に高いです。

最も簡単な方法は、デザイナーによるものです。サブ ルーチンを作成し、各コントロールのプロパティ ウィンドウで、イベント アイコン (サンダー ボルト) をクリックし、サブ ルーチンをダブルクリック イベントに割り当てます。

または、句を完全に省略して、Load イベント ハンドラでHandles一連のステートメントを使用します。Addhandlerコントロールの名前に一意の文字列を入れる場合、またはそれがすべてのコントロールである場合は、コントロールを反復処理して、すべてのコントロールに対して 1 つの addhandler ステートメントを使用できます。

For Each c As Control In Me.Controls
    AddHandler c.DoubleClick, AddressOf Ctrl_DoubleClick
Next

Private Sub Ctrl_DoubleClick(sender As Object, e As EventArgs)
    'Do stuff
End Sub
于 2013-10-31T21:18:44.080 に答える
0

フォームに画像があるかのように聞こえますfrmPhonePics。それを (VBA エディターから) ダブルクリックすると、コードが表示されます。たとえば、次のように表示されます。

Private Sub Image1_Click()

End Sub

あとは、そこにコードを追加するだけです。

Private Sub Image1_Click()
  Me.Hide
  frmPhone.Show()
End Sub

注 - は、コード フローが閉じfrmPhone.Show()られるまでコード フローを「ハイジャック」し、コードMe.Hideが閉じられるまで実行されない (フォームが閉じない)ため、順序が重要frmPhoneです。

于 2013-10-31T21:09:22.380 に答える
0

さまざまなオブジェクトのクリック ハンドラーを 1 つのものにマップすることができます。

Private Sub frmPhonePics_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) _
          Handles MyBase.Click, Handles  picLarge.Click, Handles otherThing.Click

   frmPhone.Show()         
   Me.Hide()           ' should be Me.Close?
End Sub

MyBase.Clickの代わりにコードに含まれている理由がわかりませんMe.Click。これはサブクラス化されたフォームですか?

于 2013-10-31T21:07:22.200 に答える