Data Binding и типы
От: 3EJIEHbIu  
Дата: 16.08.06 19:02
Оценка:
Доброго времени суток.
Есть такая проблемка:
Есть некие классы, к примеру

public class Gender
{
  private int id_gender;
  private string gender_value;

  public int Id_gender
  {
    get{return id_gender;}
    set{id_gender = value;}  
  }

  public string Gender_value
  {
    get{return gender_value;}
    set{gender_value = value;}  
  }

  public Gender(int Id, string Value)
  {
    id_gender = Id;
    gender_value = Value;
  }
}
public class Person
{
  private string person_name;
  private long id_gender; // другой тип!!!
  
  public long Id_gender
  {
    get{return id_gender;}
    set{id_gender = value;}  
  }

  public string Person_name
  {
    get{return person_name;}
    set{person_name = value;}  
  }
}

public class PersonForm: Form
{
  private ArrayList genderList = new ArrayList(new Gender[2]{new Gender(0, "Муж"), new Gender(1, "Жен") });
  private Person person;
  
...
   public void Init
   {
      comboBox1.DataSource = genderList;
      comboBox1.DisplayMember = "Gender_value";
      comboBox1.ValueMember = "Id_gender";
      
      Binding b = new Binding("SelectedValue", person, "Id_gender");
      b.Parse += new ConvertEventHandler(Parse);
      b.Format += new ConvertEventHandler(Format);
      comboBox1.DataBindings.Add(b);
   }
...
}

Почему-то при уходе с комбобокса, если выбрано "Жен", значение меняется на "Муж" .
В Parse делаю
e.Value = ConvertTo.Int64(e.Value);


В Format делаю
e.Value = ConvertTo.Int32(e.Value);


Проще конечно сделать один и тот же тип в обоих классах. Тогда все будет работать и без Parse, Format. Но все-таки непонятно где тут лежит собака.
Есть подозрение, что я в Format что-то неправильно делаю. Ведь SelectedValue.GetType()==typeof(Object), а Object ссылочный тип.
Вопщем я совсем запутался
Извините за длинное письмо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.