2013-10-04 2 views
0

내 클라이언트 용으로 만든 bussiness 응용 프로그램을 실행하려면 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 단추를 추가해야합니다.

+0

버튼 생성 프로세스를 자동화하는 방법을 찾고 있습니까? (특정 속성 및 클릭 이벤트와 함께 버튼 추가)? 탭 컨트롤은이 모든 것에 들어갑니다. – varocarbas

+0

네, 그렇 겠지요. 탭 컨트롤처럼 이름을 붙였습니다. 다른 탭과 같이 보이기를 원하기 때문입니다. – Hoh

+0

그런 다음 패널 대신 tabControl을 사용하고 싶습니까? 탭 당 하나의 버튼을 원하십니까? – varocarbas

답변

1

귀하의 의견으로는 런타임에 버튼을 추가하는 것에 대한 귀하의 아이디어가 너무 명확하지 않으므로이 코드에서 도움이 될 수있는 작은 코드를 포함하고 있음을 이해합니다. 새 프로젝트를 시작하고 그 위에 패널 (Panel5)과 버튼 (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입니다.

주의해야 할 문제 중 하나는 버튼의 위치입니다. 위의 코드는 논리적으로 사용자가 원하는 것을 제공하지 않는 매우 단순한 X/Y 값 (Left/Top 속성)을 자동 증가시킵니다.

+0

그게 내가 필요로하는 것에 아주 가깝지만, 어쨌든 나는 그것을 해결했다, 당신을 감사한다 @Varocarbas – Hoh

+0

@ Nidzaaaa 당신은 환영합니다. – varocarbas