отображать длинный текст в ячейке таблицы данных - PullRequest
2 голосов
/ 03 мая 2011

Я пытаюсь отобразить текст из 100-500 слов, содержащихся в строке, в два столбца одной строки таблицы данных, для которой затем устанавливается значение DataSource для элемента управления DataGridView.

Прямо сейчас, даже несмотря на то, что он очень медленный, прокрутка длится вечно.

Я уже установил DefaultStyleMode на WordWrap = true и отрегулировал высоту строки для отображения текста.

Есть ли альтернативы, чтобы ускорить это, или я должен исследовать добавление TextBox в ячейку DataGridView?

1 Ответ

1 голос
/ 03 мая 2011

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

Прежде всего, вы должны хранить оригинальный текст где-то в вашем приложении. Предположим, у вас есть тексты в массиве string[] texts

Все, что вам нужно сделать, это:

  • Добавить только часть текста в элемент управления DataGridView вместо всего текста

Вы можете сделать это, используя метод Split в классе string. Пример:

string text = "Oscar Mederos";
string portion = text.Substring(0, 3); //portion will be "Osc"

Вы можете добавить ... в конце строки, если хотите.

  • Запрограммировать событие CellClick из DataGridView.

Подпишите в своем заявлении на это событие и сделайте что-то вроде:

void DataGridView1_OnCellClick(object sender, DataGridViewCellEventArgs e)
{
    int rowClicked = e.RowIndex;
    int columnClicked = e.ColumnIndex;

    ///If the column clicked was the one that has the long texts, 
    //just find the original text in 'texts' using 'rowClicked' and show the 
    //message using MessageBox or creating a new Form for that purpose and 
    //showing it using ShowDialog()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...