Получить дескриптор IntPtr от DataGridViewTextBoxCell?

У меня есть DataGridView со столбцом ячеек текстового поля, которые должны иметь текст водяного знака. У меня также есть статический класс, который использует DLLImport для добавления водяного знака к использованию TextBox SendMessage с IntPtr hWnd как один из параметров, как это:

public static void SetWatermark(TextBox textBox, string watermarkText)
    {
        SendMessage(textBox.Handle, EM_SETCUEBANNER, 0, watermarkText);
    }

Проблема, в то время как TextBox наследовал Управление. Свойство дескриптора, DataGridViewTextBoxCell не делает, таким образом, я не могу получить тот параметр IntPtr. Это - мое понимание, что ячейка использует управление TextBox для редактирования значения, так не должен там быть некоторый способ добраться до того Дескриптора?

Я использую.NET 2.0 и C#

1
задан Travis Christian 4 July 2010 в 04:23
поделиться

1 ответ

Если вам нужна ссылка на TextBox для редактируемой ячейки, вы можете использовать свойство DataGridView.EditingControl на самом DataGridView. Поместите свой код в обработчик события EditingControlShowing, чтобы он вызывался всякий раз, когда отображается новый TextBox.

Конечно, на самом деле вам нужен водяной знак на ячейках, которые не редактируются, поскольку редактируемая ячейка имеет фокус клавиатуры, поэтому водяной знак будет скрыт в любом случае. Ячейки, которые не редактируются, не имеют ручек окна и рисуются полностью в управляемом коде, поэтому вы не можете сделать это с помощью SendMessage. Вам нужно создать подкласс DataGridViewCell и переопределить Paint или обработать событие CellPainting на DataGridView.

2
ответ дан 2 September 2019 в 23:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: