|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
[VB] Non aprire un altro Form se un altro e' gia' aperto...
Su VB.NET,
Per non aprire piu' form gia aperti in un Form Madre "IsMdiContainer" faccio questo: Codice:
Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick Select Case ToolBar1.Buttons.IndexOf(e.Button) Case 0 Dim searchForm As New Form() Dim Result As Boolean Result = False For Each searchForm In Me.MdiChildren If searchForm.Name = "Anagrafica" Then searchForm.Activate() Result = True Exit For End If Next If Not Result Then Dim Form As New Anagrafica() Form.MdiParent = Me Form.Show() End If End Select End Sub Oppure avete un altro metodo ??? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2002
Messaggi: 487
|
Premetto che non conosco .NET.
Tuttavia io proverei con un controllo sulla proprieta' "visible" del form stesso (penso esista anche in .NET...). If form1.visible = false then form1.visible = true end if Che dici, puo' andare ?
__________________
AcM Racing :: Nulla è impossibile per chi non deve farlo |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
e lo metteresti allinterno del ciclo For Each ???
For Each searchForm In Me.MdiChildren If form1.visible = false then form1.visible = true end if Next |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2002
Messaggi: 487
|
Beh, no.
Avendo ogni form un suo nome ben preciso, ad esempio "anagrafica" potrebbe avere nome "frmAnagr", basterebbe fare il controllo su tale form, senza ricercarlo tra tutti quelli presenti. Quindi niente for. Questo in Vb, in .NET no so... Aloha
__________________
AcM Racing :: Nulla è impossibile per chi non deve farlo |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2001
Città: Nordest
Messaggi: 217
|
VB.NET è un linguaggio ad oggetti, a differenza di quello che è VB6.0. Di conseguenza, non è possibile riferirsi direttamente ad un form attraverso il suo nome di classe, ma è necessario iterare tra tutti i form e cercare quello voluto.
Ho preso il tuo codice è l'ho adattato in un nuovo progetto senza fare grosse modifiche, utilizzando Form1 come MDI-container e Form2 come MDI-child: Codice:
Dim searchForm As Form 'niente new qui!
Dim Result As Boolean
Result = False
For Each searchForm In Me.MdiChildren
If TypeOf searchForm Is Form2 Then 'oppure
'If searchForm.Name = "Form2" Then
searchForm.Activate()
If searchForm.WindowState = FormWindowState.Minimized Then
searchForm.WindowState = FormWindowState.Normal
End If
Result = True
Exit For
End If
Next
If Not Result Then
Dim f As New Form2()
f.MdiParent = Me
f.Show()
End If
__________________
Chi non cerca trova. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Ma come non e' un linguaggio ad oggetti ???
Non ci posso credere...!!! per il mio problema ho risolto in questo modo: Codice:
Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick
Select Case ToolBar1.Buttons.IndexOf(e.Button)
Case 0
Dim searchForm As Form
Dim Result As Boolean
Result = False
For Each searchForm In Me.MdiChildren
If searchForm.Name = "Anagrafica" Then
searchForm.Activate()
Result = True
Exit For
End If
Next
If Not Result Then
Dim Form As New Anagrafica()
Form.MdiParent = Me
Form.Show()
End If
End Select
End Sub
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:52.



















