Problème 1:C# Affectation propriété par défaut pour la classe et l'opérateur =
J'ai une application simple WinForms et je veux Databind ma propriété Person.Name à une zone de texte. Le nom est de type StringField. J'ai initialement défini la propriété Name en tant que String. La liaison de données fonctionne très bien sur les types de valeur tels que String. Je voudrais que la propriété StringField.Value soit la propriété par défaut de StringField. Je veux voir la valeur de StringField.Value dans le textBox plutôt que le texte "FieldApp.StringField".
Problème 2:
Je voudrais être en mesure d'attribuer une chaîne à un Stringfield utilisant l'opérateur =. Cette affectation entraînerait la définition du membre StringField.Value.
Est-ce que cela peut être accompli?
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");
}
}
}