Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Modifica textbox
martedì 18 novembre 2003 - 17.37
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Tax
Profilo
| Newbie
21
messaggi | Data Invio:
mar 18 nov 2003 - 17:37
Ciao , io ho un problema , dovrei creare un controllo che scriva all'interno di un quadrato.
vorrei poter digitare i caratteri come in una textbox multilinea.
Però vorrei fare in modo che quando il testo arriva a riempire tutto lo spazio di visualizzazione il quadrato aumenti in altezza in modo da visualizzare tutto il testo .
Dovrei poi fare in modo che chi lo usa possa cambiare anche lo spazio interlinea fra le varie righe.
Perfovare datemi qualche consiglio non so propio come uscire da questa situazione !!!!!!!!!
Anonimo
Profilo
| Senior Member
392
messaggi | Data Invio:
mar 18 nov 2003 - 19:47
Ciao.
sono novizio, ma vorrei chiederti una cosa:
perchè non usi il richtextbox? Perchè non si ridimensiona automaticamente?
Puoi essere più chiaro sul progetto?
ciao
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 18 nov 2003 - 20:54
Ciao Tax,
anche secondo me la soluzione qui è usare il RichTextBox che fa mi pare quello che tu chiedi.
La cosa più difficile è verificare quando allargare il controllo verso il basso per farci stare dell'altro testo, ma questo passaggio l'ho capito poco, potresti rispiegarlo in dettaglio?
In ogni caso ci sono diversi eventi gestiti dal RichTextBox bisogna vedere se c'è anche questo.
ciao
david
Tax
Profilo
| Newbie
21
messaggi | Data Invio:
gio 20 nov 2003 - 17:48
Il problema della richTextBox è che mi torna il testo in formato rtf ,che non è compatibile con quello che mi serve(Anche se in realtà non l'ho approfondito come controllo perchè mi è stato detto che non può essere convertito in stringa), comunque provo a vedere .
Per quel che riguarda le dimensioni intendo che se creo una textBox alta un tot , questa visualizza solo le righe che stanno in quell'altezza . Per esempio se ho una textbox (multilinea) che visualizza solo tre linee. Io quando vado a digitare la quarta riga , il campo della textbox scorre facendo scomparire alla vista la mia prima riga. Io vorrei che, invece di far scomparire la prima riga, la textbox aumenti in altezza in modo da visualizzare comunque tutte le mie righe . Grazie per i consigli ....
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 21 nov 2003 - 00:00
Ora ho capito.
Non sottovalutare il RichTextBox è un componente molto potente inoltre ci sono varie proprieta non solo RTFText mi pare ma anche la semplice Text che ritorna il testo classico come lo ritorna la textbox. Ci ho lavorato parecchio ma non di recente quindi vedi sul framework le proprietà e i metodi che sono veramente tanti.
Per l'altro problema anche in quel caso, non so se è possibile. Forse è necessario fare un accrocchio per far sì che si allarghi automaticamente, ma immagino sarà necessario intercettare un particolare messaggio Win32 e questo si può fare derivando un'altra classe dalla classe base e fare un override del WndProc, insomma un mezzo casino. Mi riservo del tempo per guardarci e farti sapere.
ciao
David
Tax
Profilo
| Newbie
21
messaggi | Data Invio:
ven 21 nov 2003 - 16:21
Ho provato a fare un autodimensionamento usando la textbox, ma riesco ad aumentare le dimensioni , ma il panello di visualizzazione scorre lo stesso nascondendo la prima riga e poi le altre. Probabilmente ha un suo evento interno che gestisce automaticamente.
In alternativa sto cercando di crearne una mia .
Sono riuscito a utilizzare un drawString all'interno del mio controllo ,
che mi scrive riga dopo riga l'array di stringhe che mi creo , un po come fa la multilinea della textbox credo .
Ok funziona se intercetto il keyPress all'esterno del controllo .
Ma io voglio utilizzare il metodo onKeyPress dell'interno del mio controllo , e da li richiamare la sub che gestisce la creazione dell'array di stringhe . Non riesco a capire perchè non me lo intercetta !!! o provato a fare altre prove per esempio scrivendo all'interno del mio controllo il metodo onClick e mi funziona , il metodo onPaint mi funziona. Ma il metodo onKeyPress che utilizza l'evento KeyPressEventArgs propio non riesco a intercettarlo , non capisco perchè , sbaglio qualcosa , forse dopo che ho disegnato il mio controllo sul panello dove lo devo metter perde il fuoco e non intercetta più l'evento. aiuto !!!!!
p.s. Penso che la modifica della textbox non mi risulti utile al fine di poter scegliere lo spazio tra una riga e l'altra , mente creandomi il controllo da me stesso posso gestirmi sia l'interlinea che anche l'autodimensionamento del controllo , quindi penso che da adesso optero piu verso questo metodo , comunque se aete delle dritte su come fermare lo scorrimento del panello nelle RTB , fatem,i sapere.
Grazie per i consigli finora forniti !
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
sab 22 nov 2003 - 16:28
Ciao Tax,
io proverei una cosa di questo tipo, allora crei una textbox multiline e disabiliti il WordWrap in modo che mentre uno scrive invece di tornare a capo continua sulla stessa linea. in questo modo sono obbligati a premere invio per tornare a capo.
Così facendo puoi controllare il numero di righe e nell'evento keypress mettere sto codice:
Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
If ((e.KeyChar = Chr(13)) And (TextBox2.Lines.Length >= 4)) Then
TextBox2.Height = TextBox2.Height + TextBox2.Font.Height
End If
End Sub
In pratica alla pressione dell'invio se il numero di righe rappresentare è >=4 allarga il controllo textbox in altezza e si ottiene l'effetto da te desiderato.
Eventualmente poi se devi inserire quel testo in un DB puoi fare una replace eliminando i ritorni a capo.
Purtroppo non sono riuscito ad intercettare e capire qual è l'evento che segnala la nuova riga, pensavo rientrare fra gli scroll invece no.
ciao
david
Tax
Profilo
| Newbie
21
messaggi | Data Invio:
sab 22 nov 2003 - 16:40
Grazie proverò a vedere ma mi sa che non si riesce a bloccare lo scroll , comunque sono arrivato quasi alla fine del mio controllo personalizzato e penso che procedero in quella direzione .
Se posso però vi farei un altra domanda . A me piacerebbe utilizzare un controllo che visualizza tutte le propietà del controllo selezionato , propio come nel designer di visual studio . Ecco vorrei sapere se è gia stato creato e quindi posso inserirlo nella mia form propio come un qualsiasi altro controllo , o devo crearmelo da solo ? In caso avete qualche consiglio di come partire
a crearmi questo controllo.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
sab 22 nov 2003 - 17:28
Il controllo di cui parli si chiama PropertyGrid ed è già implementato.
Cerca sul Framework lo trovi. Per inserirlo in una WinForm prova con questo codice. Incollalo nel Load:
' The initial constructor code goes here.
Dim propertyGrid1 As New PropertyGrid()
propertyGrid1.CommandsVisibleIfAvailable = True
propertyGrid1.Location = New Point(10, 20)
propertyGrid1.Size = New System.Drawing.Size(400, 300)
propertyGrid1.TabIndex = 1
propertyGrid1.Text = "Property Grid"
Me.Controls.Add(propertyGrid1)
propertyGrid1.SelectedObject = textBox1
Vedrai che apparirà ciò che cerchi. Non so ancora bene come funziona e se fa uso di Reflection. Se ne facesse uso può essere utile poi per riutilizzarlo con i tuoi controlli personalizzati.
Ciao
David
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
sab 22 nov 2003 - 17:37
Ti confermo viene usata la reflection quindi lo puoi usare anche con i tuoi oggetti e posizionarlo sulla Form.
Automaticamente si accorgerà delle proprietà definite nell'oggetto.
ciao
David
Tax
Profilo
| Newbie
21
messaggi | Data Invio:
dom 23 nov 2003 - 19:24
Grazie mille david .
Torna su
Stanze Forum
Elenco Threads
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 !