bodjo처럼 [YourMDIForm] .ActiveMDIChild 속성이 있습니다.
Plutonix가 말한 것처럼 명확하지 않은 점은 저장 버튼이 어디에 있는지입니다. 당신은 의미 했습니까 :
첫 번째 경우는 매우 간단합니다 :의 .ActiveMDIChild
를 사용하여 MDIParent Form.
secund은 ... 그것을 할 수있는 더 나은 방법이 당신이 당신의 globalVar
과 노력 비슷한 실제 활성 자식 폼 (를 가리 키도록 몇 가지 유효한 방법이 필요 할 수 있습니다.
을 그건 그렇고, 당신이 얻을 때 . .ActiveMDIChild 통해 대상 MDIChild, 당신은 공중, 친구 또는 보호 변수 일반적 형태의 컨트롤이 비공개로 텍스트 상자에 액세스해야 당신이있을 수 있습니다 그래서 :.
Public Class [YourMDIChildClassName]
' ...
' create a Public Property
Public ReadOnly Property ContentToSave() As String
Get
Return [YourTextBox].Text
End Get
End Property
' or make your textbox public in the Form design
Public [YourTextBox] As TextBox
' ... the one or the other, not both.
' ...
End Class
"활성"MDIChild에 액세스하는 또 다른 방법 , 모든 MDIChild가 동일한 클래스의 인스턴스라고 가정하면은 자식 cl에 정적 (공유) 속성을 만드는 것입니다 엉덩이 :
Public Class [YourMDIChildClassName]
' ...
Private Shared _CurrentMDIChild As [YourMDIChildClassName] = Nothing
Public Shared ReadOnly Property CurrentMDIChild() As [YourMDIChildClassName]
Get
Return _CurrentMDIChild
End Get
End Property
' ...
End Class
그리고 당신은 시도 같은 일을 사용하지만, .Activated 대신 .Clicked를 사용
Public Class [YourMDIChildClassName]
' ...
Private Sub MyChildForm_Activated() Handles Me.Activated
_CurrenMDIChild = Me
End Sub
' And that's ALL this method SHOULD contain.
' If you try to add other activation tricks, like activating another Form,
' or firing up a DialogBox (worst case),
' everything will go WRONG and your application will hang in an endless loop !!!
' Be carefull when using .Activated.
' ...
End Class
그런 다음 당신은 정적 속성 사용하여 현재 활성화 된 MDIChild에 액세스 할 수 있습니다 :
[YourMDIChildClassName].CurrentMDIChild
' => Gives you directly a VALID instance of your MDI Child (or Nothing !)
' Then you can use in your MDI Parent :
If [YourMDIChildClassName].CurrentMDIChild IsNot Nothing Then
Dim TextToSave As String = [YourMDIChildClassName].CurrentMDIChild.ContentToSave
' ... save your text...
End If
을
마지막 활성 MDIChild에 대한 정적 (공유) 포인터를 만들었으므로 (일종의 , 나는 C와 같은 포인터가 아닙니다.)MDIChild Form을 닫을 때마다이 포인터를 업데이트해야합니다!
Public Class [YourMDIChildClassName]
' ...
Private Sub [YourMDIChildClassName]_FormClosing(_
sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
If _CurrentMDIChild Is Me Then ' And "Me" is closing right now...
_CurrentMDIChild = Nothing
' We don't want memory leak or pointer to a Form that has been closed !
End If
End Sub
' ...
End Class
어린이 양식 활성화를 처리하는 사용자 지정 방법을 만들지 않아야합니다. MDIParent.ActiveMDIChild
이 거기에 있습니다.그러나 일단 확장/사용자 지정/특정System.Windows.Forms.Form
에 처음에는 존재하지 않는 하위 폼의 속성에 액세스하려는 경우 MDIParent.ActiveMDIChild
을 실제 MDIChild에서 파생 된 형식으로 캐스팅해야합니다. 그것은 그것을 할 수있는 또 다른 방법이지만, 나만의 것입니다. 나는 주물을별로 좋아하지 않습니다.
Forms.Clicked
...
Option Explicit On
Option Strict On
Option Infer Off
이 이벤트 (클릭 수)가 실제로 존재 않습니다 항상로 IDE 설정? 나는
.Click
을 알고 있지만 "Clicked"는 아닙니다. 어쨌든 :
Public Class [YourMDIChildClassName]
' ...
Private Sub MyChildForm_Clicked() Handles Me.Click
' This part is executed when you click INSIDE the Form,
' at a location where there is NO Control.
' If you click on a control, like a Textbox, a Picturebox, a Panel, etc
' this block IS NOT EXECUTED as you've clicked on a control,
' not on the Form !
End Sub
' ...
End Class
저장 버튼은 어디에 있습니까? 각 양식에 하나 있습니까? – Plutonix