Problem 1:
I have a simple winforms app and I want to DataBind my Person.Name property to a textbox. Name is of type StringField. I originally defined the Name property as String. The data binding works great on value types such as String. I would like the StringField.Value property to be the default property of StringField. I want to see the value of StringField.Value in the textBox rather than the text ‘FieldApp.StringField’.
Problem 2:
I would like to be able to assign a string to a StringField using operator =. This assignment would result in the StringField.Value member being set.
Can this be accomplished?
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace FieldApp { public class StringField { public string Value { get; set; } } public class Person { //private String _Name; //public String Name //{ // get { return _Name; } // set { _Name = value; } //} //public Person(string name) //{ // Name = name; //} private StringField _Name; public StringField Name { get { return _Name; } set { _Name = value; } } public Person(string name) { Name = new StringField(); Name.Value = name; } } public partial class FieldAppForm : Form { Person person = new Person('steve'); public FieldAppForm() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //our form contains a button1 and textBox1 //this compiles person.Name.Value = 'steve'; //this does not. Is there anyway to accomplish this? person.Name = 'steve'; //steve appears in the textbox textBox1.DataBindings.Add('Text', person, 'Name.Value'); //FieldApp.StringField appears in the textbox textBox1.DataBindings.Add('Text', person, 'Name'); } } }
You could create an implicit operator overload. Then you can create
StringFieldfrom strings like this:Know that this creates a new
StringFieldobject. I wouldn’t necessarily advice you to do this.