2010-10-14 12 views
7

¿Existe alguna manera fácil de vincular una etiqueta con datos e incluir texto personalizado?¿Vincula una etiqueta en C# con texto adicional?

Por supuesto que se puede unir una etiqueta de este modo:

someLabel.DataBindings.Add (nuevo Binding ("Text", this.someBindingSource, "SomeColumn", true));

Pero, ¿cómo agregaría el texto personalizado, de modo que el resultado sería algo así como: someLabel.Text = "Texto personalizado" + databoundColumnText;

¿Realmente tengo que recurrir al código personalizado ...?

(tal vez mi cabeza está demasiado empañado de mi frío y no veo una solución sencilla?)

TIA para cualquier ayuda en este asunto.

+0

Debe marcar esta pregunta para la tecnología de interfaz de usuario específico (WinForms, supongo). – SKG

+0

Tienes razón, lo siento. Se agregó la etiqueta –

+0

Gracias por la pregunta y la respuesta. ¿Cómo se asegura de que solo guarde el DataColumnText sin el "Texto personalizado"? – Stavros

Respuesta

14

Siempre puede usar el evento Binding.Format.

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

El evento Format se eleva cuando los datos es empujado desde la fuente de datos en el control. Puede manejar el evento Formato para convertir datos sin formato de la fuente de datos en datos formateados para su visualización.

Algo así como ...

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 He utilizado esta solución exacta en un proyecto mío –

+0

Sí, lo probé y funciona como un encanto. ¡GRACIAS! (no puedo agregar un puntaje, porque soy un novato en este formulario ... Ah, bueno, la próxima vez) –

+0

Aunque puedes marcarlo como una respuesta :-) – SKG

1

No sé de ninguna manera simple, pero lo que debería funcionar es una clase derivada con una propiedad adicional que devuelve el texto modificado.

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

No era lo que estaba buscando, ¡pero gracias de todos modos! –

Cuestiones relacionadas