Newsgroup: it.comp.lang.visual-basic
Titolo: Problemi con showDialog e autoscroll

ciao a tutti,
scusare il subject generico ma non sapevo cosa scrivere.
Ho una form principale che richiama una form secondaria dove creo dei 
controlli a runtime.
Quando questi controlli eccedono la dimensione della form che ho creato 
devo settare il parametro AutoScroll a true per far comparire la barra 
di scorrimento, e qui viene il problema:
- se apro la form secondaria con form2.show() tutto funziona
- se la apro con form2.showdialog() mi succede una cosa un po' strana:
succede che nella form non riesco a scorrere verso il basso con il 
pulsantino nero a forma di freccia della barra di scorrimento verticale 
perchè quando ci vado sopra il mouse assume la forma a freccia diagonale 
per ridimensionare la finestra.
Se per scorrere verso il basso uso la barra funziona, ma mi "ridisegna 
male" la finestra nel senso che quelle tre linette diagonali in basso a 
dx che indicano la possibilità di fare il resize vengono ripetute tante 
volte in altezza.
Io l'aggiunta dei controlli la faccio nel form_load, immagino che il 
problema sia legato al fatto che quando lui crea la finestra non mette 
la barra di scorrimento verticale perche' non serve in quanto la 
finestra è vuota. Poi io aggiungo i controlli e la barra si sovrappone 
al controllo del ridimensionamento in qualche modo.
Ho già provato a fare un me.refresh() al termine della aggiunta dei 
controlli ma non funziona.
Segue codice di esempio per riprodurre il problema.
Create un nuovo progetto con due form e poi dalla nella form1 ci mettete 
un pulsante.
Public Class Form1
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button1.Click
         ' Form2.ShowDialog()
         Form2.Show()
     End Sub
End Class
Public Class Form2
     Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles MyBase.Load
         Me.AutoScroll = True
         For i As Integer = 1 To 15
             Dim lbl As New System.Windows.Forms.Label
             Dim txt As New System.Windows.Forms.TextBox
             ' Creo la label
             With lbl
                 .Name = "lbl" & i
                 .Location = New Point(30, i * 60)
                 .Text = "Ciao " & i
             End With
             ' Creo la textbox
             With txt
                 .Name = "txt" & i
                 .Location = New Point(30 + 100, i * 60)
             End With
             Me.Controls.Add(txt)
             Me.Controls.Add(lbl)
         Next
     End Sub
End Class
Grazie per ogni aiuto, ciao
Mauro

Nessuno che possa almeno provare e dirmi se il problema si presenta 
anche sul suo pc?
grazie, ciao
Mauro

"Innuendo" <prova@b.c> ha scritto nel messaggio 
news:XjFnn.35832$Ua....@twister2.libero.it...

Confermo che il primo dei due problemi si presenta anche da me (non 
funzionano i pulsanti a freccia delle scrollbar che confinano con la 
SizeGrip, il triangolino di ridimensionamento del form).
Tra l'altro ho scoperto che c'entra la proprietà SizeGripStyle del form 
secondario.
Se vale "Auto" (default) il problema avviene solo quando il form secondario 
viene mostrato con ShowDialog.
Se vale "Show" il problema si manifesta *anche* mostrandolo con Show.
Se vale "Hide"... indovina... il problema non c'è più! Ovviamente però, 
quando spariscono le scrollbar, sparisce anche la SizeGrip (come quando 
SizeGripStyle=Auto).
Ecco quindi il workaround:
        Dim f As New Form2
        f.SizeGripStyle = Windows.Forms.SizeGripStyle.Hide
        f.ShowDialog()
Bye
Raf 

 f.ShowDialog()
Fantastico !!!! Grazie infinite !
Mi ero letto tutte le proprietà della form una per una (più volte) ma 
non avevo mai pensato di indagare sulla SizeGripStyle (che non conoscevo).
Io mi stavo fissando a fare refresh, suspendLayout et simili senza successo.
grazie ancora :-)
ciao
Mauro