Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Ограничить обработчик событий в определенных столбцах Datagridview

Автор вопроса: maheshОтветов: 1

Я пытался ограничить отслеживание EventHandler в определенных столбцах Datagridview, но не смог этого сделать.

private void dataGridView1_EditingControlShowing(object sender,
DataGridViewEditingControlShowingEventArgs e)
    {

 if (this.dataGridView1.CurrentCell.ColumnIndex==0)
        {
            if (e.Control is TextBox)
            {
                TextBox dgvEditBox  = e.Control as TextBox;
                dgvEditBox.TextChanged += new EventHandler(dgvEditBox_TextChanged);

            }

        }


    }


  private void dgvEditBox_TextChanged(object sender, EventArgs e)
    {
        //Extract the textbox control
        TextBox dgvEditBox = (TextBox)sender;
      //  TextBox dgvEditBox = new TextBox();

        //Insert the appropriate string
        if (dgvEditBox.Text.Length == 1)
        {
            if (dgvEditBox.Text == "B" || dgvEditBox.Text == "b")
            {
                dgvEditBox.Text = "Ball";
            }
        }
    }

В приведенном выше коде предполагается, что я пытаюсь поместить текст "Ball" в столбец "0" datagridview1, но это

влияет на другие столбцы, например если я нажимаю "b" или "B" в столбце 1, это также возвращает "мяч" в столбце 1.

Чего я не хочу. Можно ли ограничить его столбцами "O" только указанным выше способом?

  • попробуйте достичь columnIndex и ограничить его в обработчике событий, например if(columnIndex == 0) //Не делайте.. Serkan Hekimoglu 25.11.2010
  • @Серкан Хекимоглу, извини, я тебя не понимаю. вы имеете в виду в dgvEditBox_textchange EventHandler?. Как ?. Можете ли вы объяснить подробно, пожалуйста. mahesh 25.11.2010

visual-studiodatagrid

Ответы

Ответ 1 · рейтинг 1 · Community

добавьте это в функцию dgvEditBox_TextChanged в последней строке вне блока if (dgvEditBox.Text.Length == 1);

dgvEditBox.TextChanged -= new EventHandler(dgvEditBox_TextChanged);

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы