Если вы хотите установить constrainedWidth/Height
программно, то вы должны взять ConstraintLayout.LayoutParams
для своего просмотра и установить флаг с именем constrainedWidth или constrainedHeight по вашему желанию. 115]
Т.е.
ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams) myView.getLayoutParams(); // View for which we need to set constrainedWidth.
lp.constrainedWidth = true/false;
myView.setLayoutParams(lp);
constrainedWidth
Укажите, будет ли ограничен размер по горизонтали в случае, когда левые и ампер; установлены правильные ограничения, и измерение виджета не является фиксированным измерением.
По умолчанию, если для виджета установлено значение
WRAP_CONTENT
, мы будем рассматривать это измерение как фиксированное измерение , то есть измерение не изменится независимо от ограничений.Установка этого атрибута в true позволяет измерению изменяться для соблюдения ограничений.
blockquote>Проверьте здесь .
Мы закончили тем, что использовали виджет ToolTip и CellMouseEnter
, CellMouseLeave
события для показа его соответственно. Не оптимальный, но это работает вокруг нечетного поведения, которое мы испытывали.
Кажется от Вашего вопроса, что Вы устанавливаете текст всплывающей подсказки столбцов. Текст всплывающей подсказки столбцов только появляется при плавании по заголовкам. Для показа текста всплывающей подсказки на ячейках, Вы имеете к сцеплению CellToolTipTextNeeded
событие и установленный значение e.ToolTipText
в конечном счете args
Я не знаю, является ли эта подсказка решением Вашей определенной проблемы, но Вы используете SP1 VS2008? Этот Пакет обновления решает много других вопросов, поскольку я обнаружил.
Попробуйте использовать свойство Cell.ToolTipText. Вам, вероятно, придется зацикливать строки DataGridView и настраивать всплывающие подсказки вручную:
For Each row As DataGridViewRow In Me.DataGridView.Rows
Me.DataGridView("MyCol", row.Index).ToolTipText = "MyToolTipText"
Next
Может не подходить для привязанного DataGridView с большим количеством строк, но у меня успешно работает с несвязанным DataGridView с парой сотен строк. Надеюсь это поможет.
В настоящее время у меня такое же поведение на Framework 3.5. Кажется, что необходимо установить свойство DataSource, чтобы сработало событие CelToolTipTextNeeded.
Когда я добавил в форму datagridview с одним (пустым) столбцом, добавил текст в свойство ToolTipText для этого столбца и убедился, что для свойства ShowCellToolTips для datagridview установлено значение True, я получаю всплывающую подсказку при наведении курсора мыши на заголовок этого столбца. Кажется, это противоречит тому, что было заявлено в исходном вопросе, но в моем тесте сетка не была привязана к данным. Не уверен, что это имеет значение. Однако в проекте с привязкой к данным datagridview я просто использовал компонент ToolTip:
(1) Добавьте компонент ToolTip в вашу форму.
(2) Задайте для свойства ToolTip свойства toolTip1
(или эквивалентного имени для вашего компонента ToolTip) любой текст, который вы хотите отобразить.
(3) Установите для свойства ShowCellToolTips представления данных значение False.
(4) Альт! Работает как положено.
Я нашел в этой статье помощь по настройке всплывающих подсказок для каждой строки.
Я просто хотел подтвердить, что обработка события CellToolTipText у меня работает в VS2008 SP1.
Для тех из вас, кому интересно, как установить текст в значение из базовой строки данных, это может быть полезно:
private void myDGV_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
{
// This is used to set tooltiptext for individual cells in the grid.
if (e.ColumnIndex == 2) // I only want tooltips for the second column (0-based)
{
if (e.RowIndex >= 0) // When grid is initialized rowindex == 0
{
// e.ToolTipText = "this is a test."; // static example.
DataRowView drv = ((DataGridView)sender).Rows[e.RowIndex].DataBoundItem as DataRowView;
MyTableRowClass theRow = drv.Row as MyTableRowClass;
e.ToolTipText = theRow.Col1 + "\r\n" + theRow.Col2;
}
}
}