2010-10-14 1 views
7

Czy istnieje prosty sposób na powiązanie bazy danych etykiety ORAZ dodanie niestandardowego tekstu?Datowanie etykiety w języku C# z dodatkowym tekstem?

Oczywiście mogę powiązać etykietę tak:

someLabel.DataBindings.Add (nowe wiązania ("tekst", this.someBindingSource, "SomeColumn", true));

Ale w jaki sposób dodać tekst niestandardowy, aby wynik był podobny do:

Czy naprawdę muszę uciekać się do niestandardowego kodu ...?

(może moja głowa jest zbyt zamglone od mojego zimno i nie widzę proste rozwiązanie?)

TIA za wszelką pomoc w tej sprawie.

+0

należy oznaczyć to pytanie dla konkretnego interfejsu Tech (WinForms chyba). – SKG

+0

Masz rację, przepraszam za to. Dodano tag –

+0

Dziękuję za pytanie i odpowiedź. Jak upewnić się, że zapisujesz tylko tekst databoundColumnText, bez "Custom text"? – Stavros

Odpowiedz

14

Zawsze można użyć zdarzenia Binding.Format.

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

Impreza Format jest podniesiona, gdy dane jest wypychany ze źródła danych do kontrolą. Można obsługiwać zdarzenie Format , aby przekonwertować niesformatowane dane z źródła danych na sformatowane dane w celu wyświetlenia.

Coś ...

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 Użyłem tego dokładnego rozwiązania w moim projekcie –

+0

Tak, po prostu wypróbowałem i działa jak czar. DZIĘKI! (nie mogę dodać wyniku, ponieważ jestem nowicjuszem w tym formularzu ... no cóż, następnym razem) –

+0

Możesz oznaczyć to jako odpowiedź :-) – SKG

1

Nie znam żadnego prostego sposobu, ale to, co powinno działać, to klasa pochodna z dodatkową właściwością, która zwraca zmodyfikowany tekst.

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

To nie było to czego szukałem, ale dzięki! –