0

MDI containerクライアント用に作成したビジネスアプリケーションを実行するために使用しています。使用MDIするということは、複数のフォームを開くと、手動で閉じるまでバックグラウンドで常に実行されることを意味するからです。

私が必要とするのはUser Control、開いているすべてのフォームをタブフォームでプレビューできるものを作成することです。これにより、クライアントは、現在表示しているフォームを閉じることなく、開いているフォームのすべてまたは一部を簡単に閉じることができます。

今のところ、このコードを使用しているため、メニューから最初にクリックされた項目のみがボタンとして表示されますが、他のクリックされたメニュー項目は表示されません。

Private Sub MenuStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles MenuStrip1.ItemClicked
    Dim Button As New Button
    Me.Panel5.Controls.Add(Button)
    Button.Text = e.ClickedItem.Name
    Button.Width = 50
    Button.Height = 25
End Sub

ここで、以下のボタンを追加するコードを作成する必要があります。また、サブメニュー項目をクリックしたときにのみボタンを追加するコードを追加する必要があります (新しいフォームをクリックすると表示されます)。
また、Closeプレビューされた User-Button-Control に小さなボタンを追加する必要があります。

4

1 に答える 1

1

あなたのコメントから、実行時にボタンを追加することに関するあなたのアイデアはあまり明確ではないことを理解しています。したがって、この面で役立つことを願って小さなコードを含めています. 新しいプロジェクトを開始し、その上に Panel ( Panel5) と Button ( AddButtons) を置き、次のコードを記述します。

Dim lastButtonIndex, lastLeft, lastTop As Integer

Private Sub Button_Click(sender As System.Object, e As System.EventArgs)

    Dim curButton As Button = DirectCast(sender, Button)

    If (curButton.Name = "Button1") Then
        'do Button1 stuff
    End If
    'etc.

End Sub

Private Sub addNewButton()

    lastButtonIndex = lastButtonIndex + 1
    lastLeft = lastLeft + 5
    lastTop = lastTop + 5

    Dim Button As New Button
    With Button
        .Name = "Button" + lastButtonIndex.ToString()
        .Text = "Button" + lastButtonIndex.ToString()
        .Width = 50
        .Height = 25
        .Left = lastLeft
        .Top = lastTop
        AddHandler .Click, AddressOf Button_Click
    End With

    Me.Panel5.Controls.Add(Button)

End Sub

Private Sub ButtonAddButtons_Click(sender As System.Object, e As System.EventArgs) Handles AddButtons.Click
    addNewButton()
End Sub

このコードは、 をクリックするたびに新しいボタンをパネルに追加しますAddButtons。すべてのボタンには、関連付けられたClick Event(すべてのボタンに同じもの) がありますButton_Click。このメソッド内でどのボタンが現在のボタンであるかを知る方法はsender、コードに示されているように、 を使用することです (条件はボタンと同じ数だけ配置できます。名前は 1 から順番に付けられますが、参照として他のプロパティを取得することもできます。curButtonは与えられたButton Control)。

注意しなければならない問題の 1 つは、ボタンの位置です。上記のコードには、非常に単純化された X/Y 値 ( Left/Topプロパティ) の自動増加が含まれており、論理的には、必要な結果が得られません。

于 2013-10-04T09:20:13.960 に答える