Непонятки с привязкой Richtextbox к Bindingsource

Тема в разделе ".NET", создана пользователем apogee, 5 фев 2007.

Наш партнер Genesis Hackspace
Статус темы:
Закрыта.
  1. apogee

    apogee Гость

    Кидаю на форму RichTextBox и привязываю его свойство "Text" к экземпляру типа BindingSource. Устанавливаю Data Source Update Mode в значение OnValidation. Таким образом, я ожидаю, что при потере RichTextBox'ом фокуса ввода у меня будет обновляться источник данных. В классе формы у меня есть обработчик события ListChanged типа BindingSource. Так вот, при потере фокуса ввода контролом RichTextBox ничего не происходит и обработчик события ListChanged не выполняется!!!
    Что за беда? Что не так?
     
  2. apogee

    apogee Гость

    Возможно, не совсем понятен вопрос. Вот пример.

    using System;
    using System.Drawing;
    using System.Windows.Forms;
    using System.Data;
    class Test : Form
    {
    DataSet dsFruit = new DataSet();

    [STAThread]
    static void Main(string[] args)
    {
    Application.EnableVisualStyles();
    Application.Run(new Test());
    }
    public Test()
    {
    Text = "Тестовая форма";
    ClientSize = new Size(500, 300);
    // Создаем таблицу
    DataTable tbl = new DataTable("Fruit");
    DataColumn col = tbl.Columns.Add("Description", typeof(string));
    col.AllowDBNull = false;
    dsFruit.Tables.Add(tbl);
    // Заполняем таблицу дейтасета данными
    DataRow row;
    row = tbl.NewRow();
    row["Description"] = "Яблоки";
    tbl.Rows.Add(row);
    row = tbl.NewRow();
    row["Description"] = "Груши";
    tbl.Rows.Add(row);
    row = tbl.NewRow();
    row["Description"] = "Персики";
    tbl.Rows.Add(row);
    // Теперь создаем экземпляр типа BindingSource, который будет
    // источником данных для контролов, расположенных на форме.
    BindingSource bsFruit = new BindingSource(dsFruit, "Fruit");
    bsFruit.ListChanged += new System.ComponentModel.ListChangedEventHandler(bsFruit_ListChanged);
    // Грид
    DataGridView grid = new DataGridView();
    grid.Parent = this;
    grid.Location = new Point(5, 25);
    grid.Size = new Size(300, 200);
    grid.DataSource = bsFruit;
    // RichTextBox
    RichTextBox rtbx = new RichTextBox();
    rtbx.Parent = this;
    rtbx.Location = new Point(350, 25);
    rtbx.Size = new Size(125, 200);
    rtbx.DataBindings.Add("Text", bsFruit, "Description");
    rtbx.DataBindings[0].DataSourceUpdateMode = DataSourceUpdateMode.OnValidation;
    // Вспомагательный контрол. Сюда будем переводить фокус ввода
    TextBox tbx = new TextBox();
    tbx.Parent = this;
    tbx.Location = new Point(5, 250);
    }
    // Вот здесь надо поставить точку останова
    void bsFruit_ListChanged(object sender, System.ComponentModel.ListChangedEventArgs e)
    {
    }
    }
    Ставим точку прерывания в обработчике события ListChanged. Далее, редактируем любую строку в гриде и переводим мышкой курсор на TextBox. Обработчик выполняется. Теперь редактируем текст в RichTextBox и переводим курсор на TextBox. Обрабочик не выполняется!
     
Загрузка...
Похожие Темы - Непонятки привязкой Richtextbox
  1. LuMee
    Ответов:
    6
    Просмотров:
    3.137
  2. alb
    Ответов:
    0
    Просмотров:
    2.051
Статус темы:
Закрыта.

Поделиться этой страницей