2010-10-14 8 views
7

Esiste un modo semplice per associare un'etichetta E includere del testo personalizzato?Associazione di codice in C# con testo aggiuntivo?

Certo che posso associare un'etichetta in questo modo:

someLabel.DataBindings.Add (nuova associazione ("Testo", this.someBindingSource, "SomeColumn", true));

Ma come aggiungerei testo personalizzato, in modo che il risultato sia qualcosa di simile: someLabel.Text = "Testo personalizzato" + databoundColumnText;

Devo davvero ricorrere al codice personalizzato ...?

(forse la mia testa è troppo appannato dal mio freddo e non riesco a vedere una soluzione semplice?)

TIA per tutto l'aiuto su questa materia.

+0

Si dovrebbe contrassegnare questa domanda per la specifica tecnologia UI (WinForms credo). – SKG

+0

Hai ragione, mi dispiace per quello. Aggiunta del tag –

+0

Grazie per la domanda e la risposta. Come fai a essere sicuro di salvare solo il databoundColumnText, senza il "Testo personalizzato"? – Stavros

risposta

14

È sempre possibile utilizzare l'evento Binding.Format.

http://msdn.microsoft.com/en-us/library/system.windows.forms.binding.format.aspx

L'evento Format si solleva quando i dati viene spinto dalla sorgente dati in controllo. È possibile gestire l'evento di formattazione per convertire i dati non formattati da l'origine dati in dati formattati per la visualizzazione.

Qualcosa di simile ...

private string _bindToValue = "Value from DataSource"; 
    private string _customText = "Some Custom Text: "; 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     var binding = new Binding("Text",_bindToValue,null); 
     binding.Format += delegate(object sentFrom, ConvertEventArgs convertEventArgs) 
           { 
            convertEventArgs.Value = _customText + convertEventArgs.Value; 
           }; 

     label1.DataBindings.Add(binding); 
    } 
+0

+1 Ho usato questa soluzione esatta in un mio progetto –

+0

Sì, l'ho provato e funziona come un incantesimo. GRAZIE! (non posso aggiungere un punteggio, perché sono un novizio su questo modulo ... Oh beh, la prossima volta) –

+0

Puoi comunque contrassegnarlo come risposta :-) – SKG

1

Non conosco alcun modo semplice, ma ciò che dovrebbe funzionare è una classe derivata con una proprietà aggiuntiva che restituisce il testo modificato.

class FooAppendedText : FooText 
{ 
    public String AppendedText { get { return this.Text + " xyz"; }} 
} 
+0

Non era quello che stavo cercando, ma grazie comunque! –

Problemi correlati