У меня проблема с моим TLP. Я хотел бы, чтобы цвет ячейки менялся, когда мышь перемещается по ячейкам. Я пробовал разные вещи, но ничего не работает. У вас есть идея, как я могу решить эту проблему?
Перемещение мыши по ячейке моей таблицы tablelayoutpanel
Ответы (1)
С TLP не очень приятно работать.
Вы можете использовать TableLayoutCellPaintEventArgs
, чтобы узнать о ячейке во время рисования и преобразовать положение курсора на экране в относительное с помощью PointToClient
..
Вот пример, но я не уверен, насколько хорошо он будет работать для больших TLP:
private void tableLayoutPanel1_MouseMove(object sender, MouseEventArgs e)
{
tableLayoutPanel1.Invalidate();
}
private void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
{
Point pt = tableLayoutPanel1.PointToClient(Cursor.Position);
using (SolidBrush brush = new SolidBrush(e.CellBounds.Contains(pt) ?
Color.Red : tableLayoutPanel1.BackColor))
e.Graphics.FillRectangle(brush, e.CellBounds);
}
Это закрашивает ячейку, над которой находится курсор, и сбрасывается, когда он уходит. Если вы хотите сохранить измененный цвет, вам нужно будет сохранить его в 2d-массиве и использовать его в качестве альтернативного цвета. Детали будут зависеть только от того, чего вы хотите достичь.
person
TaW
schedule
15.02.2016
Спасибо за вашу помощь TaW!
- person Sebna665; 17.02.2016