TextBox a RunTime

mercoledì 06 settembre 2006 - 12.58

riminese77 Profilo | Junior Member

Ciao a tutti,
ho un piccolo problema, lo riassumo brevemente:
Ho una MDI che apre una formA, questa costruisce una textBoxA a RunTime, poi chiama una routine ModuloA,.
Vorrei che tornando dal ModuloA, mi setta il focus su TextBoxA. Sono riuscito a farlo per tutti i controlli inseriti nel formA, ma quello creato a RunTime è appartenente ad un PannelBox e non riesco a richiamarlo....
Beh spero di essere stato chiaro...

Un'ultima cosa, io ho Vb.Net la versione 2002 quindi la prima che è uscita, pur avendo installato tutti i tipi di Framework non riesco a fare visualizzare i Form con lo Stile di Xp. VisualStyle.enable = true (per intenderci), il comando VisualStyle non esiste in questa Versione di VB.net?

Un grazie in anticipo!

alextyx Profilo | Expert

Dovresti postare il codice che usi. A me questo codice funziona (VS2003), tu che sistema hai usato?

Public Class Form1
Inherits System.Windows.Forms.Form

Dim WithEvents t As TextBox

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

t = New TextBox
t.Name = "CreataARunTime"
t.Size = New System.Drawing.Size(75, 20)
t.BackColor = Color.White
t.ForeColor = Color.Black
t.Text = "Trovami"
Me.Panel1.Controls.Add(t)
t.BringToFront()

End Sub


Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.t.Text = "Trovata!"
End Sub
End Class

rimini Profilo | Newbie

Ciao, grazie intanto dell'interessamento,
Allora nel modulo creo l'oggetto Text :
***
Friend TiCogn As New TextBox()
***
ed infine, tutte le procedure per il textchange, il textvalidating ecc ecc.

Ora nel Form scrivo:
****
InizializzaTCogn(8, 8, 272, 24, "COGNOME")
FAnaCli.PanelAna.Controls.Add(TiCogn)
' Me.Controls.Add(TiCogn)
TiCogn.TabIndex = 2
****
e richiamo tutte le procedure di change ecc ecc e si comporta normalmente come una textbox.
Ora in un'altra procedura che richiamo dal Form, se è vera, mi deve tornare al Form e settare il focus sul TiCogn.... ma ovviamente non riesco...
La mia idea è questa (il controllo esiste e viene creato)
****
With (currentForm.Container.Components("TidTecCli"))
currentForm.Select(FAnaCli.PanelAna.controls("TiCogn").Focus
End With
****
è palesemente sbagliato, ma non so come procedere.
P.S. il currentForm è il Form aperto in questo caso quello che ho creato.

Grazie e a presto spero!

alextyx Profilo | Expert

>Ciao, grazie intanto dell'interessamento,
>Allora nel modulo creo l'oggetto Text :
>***
> Friend TiCogn As New TextBox()
>***
>ed infine, tutte le procedure per il textchange, il textvalidating
>ecc ecc.
>
>Ora nel Form scrivo:
>****
> InizializzaTCogn(8, 8, 272, 24, "COGNOME")
> FAnaCli.PanelAna.Controls.Add(TiCogn)
> ' Me.Controls.Add(TiCogn)
> TiCogn.TabIndex = 2
>****
>e richiamo tutte le procedure di change ecc ecc e si comporta
>normalmente come una textbox.
>Ora in un'altra procedura che richiamo dal Form, se è vera, mi
>deve tornare al Form

Ma chiudi o nascondi il form, oppure chiami solo del 'codice', e quindi il focus rimane alla form che contiene la famigerata TiCogn?
Perchè in tale caso dovrebbe bastare:

If MiaProceduraCheSeTornaTrueDeveDareIlFocusATiCogn Then
TiCogn.Focus
End If

O per caso il tuo problema è di ottenere un riferimento al form che contiene TiCogn? In altre parole, riesci ad accedere ai controlli e alle proprietà del form che contiene TiCogn, nel momento in cui cerchi di assegnare il focus a quest'ultima?

rimini Profilo | Newbie

Un'idea potrebbe essere quella che dici tu, di applicare il focus quando richiamo il codice, ma sarebbe meglio poter checcare direttamente dal modulo la Textbox.
Il Form rimane visibile, tanto è una procedura di qualche secondo.

Ti inserisco questo codice che inserisco nel modulo come prova e verifica se TidTecCli è presente nel Form che lo sta richiamando:

****
If currentForm.Contains(TidTecCli) Then
currentForm.Controls("TidTecCli).Focus() ' La mia TEXT è sotto un Panel
MsgBox("C'è")
Else
MsgBox("non c'e'!!")
End If
*****
Qui vede il controllo e visualizza la MexBox "C'è" .
la seconda riga che setta il focus è sbagliata perchè dovrei inserire il numero del controllo che non so, come posso sostituirla?
Praticamente non so come scrivere di mettere il focus su un controllo creato a RunTime e Aggiunto in un panelControl :(
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5