2009-03-31 14 views
8

C'è un modo per fare un un'etichetta in un modulo .NET di Windows per essere highlightable per consentire il testo da copiare. Ho provato a farlo con una casella di testo creata come un'etichetta, ma questo si traduce in un cursore lampeggiante.evidenziazione etichette Windows Form

risposta

12

Penso che questo è maledettamente vicino:

textBox.BackColor = System.Drawing.SystemColors.Control; 
textBox.BorderStyle = System.Windows.Forms.BorderStyle.None; 
textBox.ReadOnly = true; 
textBox.Text = "This is selectable text"; 
textBox.MouseUp += new MouseEventHandler(
          delegate(object sender, MouseEventArgs e) 
          { HideCaret((sender as Control).Handle); }); 

[DllImport("User32.dll")] 
static extern Boolean HideCaret(IntPtr hWnd); 

E se avete bisogno di includere più di una riga:

textBox.Multiline = true; 
1

Non è insolito che il testo statico selezionabile mostri un cursore lampeggiante. Se ottieni le proprietà di qualsiasi file in Esplora risorse e selezioni tutti i dati in quella finestra, vedrai anche un cursore lampeggiante.

+0

L'unico controllo che posso trovare che consente la selezione del testo senza un cursore è il controllo WebBrowser. – BlueMonkMN

0

si ha la funzione di HideCaret in User32.dll. Usalo in questo modo:

[DllImport("User32.dll")] 
static extern bool HideCaret(IntPtr hWnd); 

private void textBox_Enter(object sender, EventArgs e) 
{ 
    HideCaret(textBox.Handle); 
} 

Ciò impedirà la visualizzazione del cursore quando è attiva la casella di testo.

+0

Questo non funziona, non nasconderà il Caret. – Samuel

0

Una cosa da considerare è quello di andare avanti e di utilizzare un'etichetta, ma poi di programmazione copiare il contenuto (il testo del Label) nella clipboard usando:

Clipboard.SetText(yourLabel.Text); 
+0

OREI questo come "caratteristica". – Samuel

+0

Bella generalizzazione. Molte volte ho trovato utile impostare a livello di codice il contenuto degli appunti. Forse lo stesso è vero per l'app dell'OP - senza ulteriori dettagli che tu o io non possiamo dire. Sto semplicemente presentando questa opzione. –

+0

Il fatto che tu lo suggerisca anche come opzione suggerisce che hai zero esperienze nell'interazione con l'utente. – Samuel

6

Se si vuole che sia un prevedibile, ben educati e il controllo standard con tutta la tastiera e il supporto di collegamento è semplicemente necessario una casella di testo. E poi il cursore lampeggiante è una caratteristica utile, perché combatterlo?