Есть ли способ удалить линию выделения (выделенную) в комбинированном окне с привязкой к данным в представлении данных? - PullRequest
1 голос
/ 26 апреля 2019

У меня проблемы с привязанной к данным базой данных dbagviewview

Я хочу удалить синюю линию выделения, которая появляется на комбинированной ячейке с данными.

Я заметил, что если комбинированная ячейка не связана с данными, но содержит набор элементов, синяя линия не появляется.однако в комбинированном ящике с привязкой к данным он есть.

коллекция элементов

С привязкой к данным

Вы увидите, что на первом рисунке естьсиней линии выделения нет, однако на следующем рисунке (комбинированная ячейка с привязкой к данным) есть ...

Мне нужно убрать эту строку выбора, чтобы, когда комбинированная ячейка с привязкой к данным имела только одну строку данных, пользователь мог пройти толькоклавиатурные входы могут сделать выбор.

Сначала я попытался добавить событие keyDown, чтобы установить Items [index], который изменил значение, однако, когда я покидаю ячейку, он отображает Имя модели и пространство имен.Затем, возвращаясь к ячейке, она отображает значение.

Я использовал следующий код, чтобы сделать это: я добавил событие комбинирования клавиш в выпадающий список, и вот событие keydown

private void dataGridView_KeyDown(object sender, KeyEventArgs e)
    {

        if (e.KeyCode == Keys.Enter)
        {
            if (dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex].CellType.Name == "DataGridViewComboBoxCell" && dataGridView1.CurrentCell.ReadOnly == false)
            {
                DataGridViewRow row = dataGridView1.CurrentRow;
                try
                {
                    if ((row.Cells[dataGridView1.CurrentCell.ColumnIndex] as DataGridViewComboBoxCell).Items.Count == 1)
                    {
                        (dataGridView1.CurrentRow.Cells[dataGridView1.CurrentCell.ColumnIndex] as DataGridViewComboBoxCell).Value = taxcodes[0];
                        (dataGridView1.CurrentRow.Cells[dataGridView1.CurrentCell.ColumnIndex] as DataGridViewComboBoxCell).DisplayMember = "FullDescription";
                        (dataGridView1.CurrentRow.Cells[dataGridView1.CurrentCell.ColumnIndex] as DataGridViewComboBoxCell).ValueMember = "TaxID";

                    }


                }
                catch
                {

                }
            }
        }

Теперь, когда я безуспешно попытался изменить заданное значение поля со списком, я перехожу к следующему возможному решению, которое я, возможно, смогу приступить к работе.

Если я могу сделать так, чтобы в поле со списком не было строки выборакогда он открывается первоначально, то, как только эта строка переходит к единственному элементу в списке, он выберет, чтобы дать возможность выбрать его в качестве значения.

ПРИМЕЧАНИЕ: работает комбинированная ячейка с данными, имеющая более одного элемента, работаетхорошо

ПРИМЕЧАНИЕ: комбинированная ячейка без привязки к данным с определенными элементами работает хорошо, однако мне нужен элемент отображения, а также элемент значения

Идеальный результат этого запроса даст мне возможность выбратьэлемент комбинированного списка данных (с использованием клавиши ENTER), когда в комбинированном блоке есть только один элемент.

Заключительное примечание: когда я использую мышь длялекция на comboboxcell с данными только 1 пункт, он работает отлично.

Спасибо за помощь, если кто-то может помочь

1 Ответ

0 голосов
/ 29 апреля 2019

Поэтому, посоветовавшись с другом, мне удалось переопределить метод .ToString ()

public override string ToString()
{
     return FullDescription;
}

В этом случае это сработало, и маршрут Keydown был правильным маршрутом.

...