Domanda

Sto cercando di fare il mio controllo per NET utilizzando VB e sto avendo problemi di raggiungere quello che voglio fare. In realtà, io sto facendo un controllo che eredita dalla classe casella di testo e l'unica modifica che sto cercando di portare ad essa è che se il controllo è visibilmente piena, l'utente non può digitare più. Quindi:

  • Barre di scorrimento non devono mai apparire.
  • Il TextBox esteso può essere multilinea o SingleLine.
  • Il TextBox esteso può avere diversi tipi di carattere e le dimensioni dei caratteri.

In questo momento, la tecnica che sto utilizzando è graphics.measurestring per ottenere un SIZEF contenente la larghezza e l'altezza della mia stringa per confrontarlo con l'altezza e la larghezza del mio controllo TextBox. Tutto questo in KeyDown (non so di lui è la soluzione migliore). Posso farlo funzionare bene per la larghezza, ma io non riesco a ge la giusta altezza in una casella di testo multilinea. Se qualcuno ha mai lavorato con questa roba, avrei bisogno di qualche spiegazione su come dovrebbe essere fatto. Grazie.

È stato utile?

Soluzione

Il problema è il tuo terzo requisito:

The extended TextBox may have different fonts and font sizes. 

Ciò significa che si dovrà capire quanto alto ogni linea è di quali personaggi della linea hanno la più grande dimensione del carattere, e di sapere che, si dovrà conoscere anche quali personaggi sono in ogni riga. C'è di peggio, perché (a sorpresa) font diversi possono avere diverse altezze data la stessa dimensione in punti. Che tutto potrebbe essere praticabile, se non fosse per il fatto che ciascun carattere in un font a spaziatura proporzionale è una larghezza differente.

E se avete intenzione di supportare apici e pedici ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top