Проблем 1:
Имам просто приложение winforms и искам да обвържа DataBind моето свойство Person.Name към текстово поле. Името е от тип StringField. Първоначално дефинирах свойството Name като String. Свързването на данни работи чудесно за типове стойности като String. Бих искал свойството StringField.Value да бъде свойството по подразбиране на StringField. Искам да видя стойността на StringField.Value в текстовото поле, а не текста "FieldApp.StringField".
Проблем 2:
Бих искал да мога да присвоя низ към StringField с помощта на оператор =. Това присвояване ще доведе до задаване на член StringField.Value.
Може ли това да бъде постигнато?
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");
}
}
}