Изменение размера панели макета таблицы в C # - PullRequest
7 голосов
/ 11 июня 2009

Я считаю панель макета таблицы в c # (.net 2.0) очень примитивной. Я хотел, чтобы мои пользователи могли изменять размеры столбцов на панели макета таблицы, но для этого нет готовых опций. Есть ли способ хотя бы выяснить, находится ли курсор непосредственно над какими-либо границами ячейки, и если да, то какая ячейка находится ниже него? Может быть, имея эту информацию, мы можем хотя бы попробовать изменить размер строки / столбца через код. Помогите мне найти,

  • находится ли курсор непосредственно над какими-либо границами ячейки
  • какая клетка находится ниже (применимо, только если на первый вопрос есть ответ)

Большое спасибо,

Сударсан Шринивасан

Ответы [ 2 ]

9 голосов
/ 11 июня 2009

Если ваш макет не слишком сложный, может быть, вы можете добиться того, чего хотите, используя SplitContainer элементы управления? К сожалению, у каждого SplitContainer будет только две «ячейки», но вы можете встроить SplitContainer в другую панель SplitContiner, чтобы получить больше изменяемых размеров ячеек:

┌──────────────────┐
│┌─────┬──────────┐│
││     │          ││
││     │          ││
│└─────┴──────────┘│
├──────────────────┤
│┌──────────┬─────┐│
││          │     ││
││          │     ││
│└──────────┴─────┘│
└──────────────────┘

ОК, так что искусство ASCII никогда не было одним из моих сильных навыков, но я думаю, вы поняли; o)

1 голос
/ 23 ноября 2017

Здание поверх @ решения Фредрика Мёрка :

После встраивания других SplitContainer (ов) единственным недостатком является то, что они не изменяют размер вместе автоматически, поэтому вы быстро теряете табличное представление. Решением может быть установка обработчика событий SplitterMoved для каждого применимого SplitContainer:

private void mySplitContainer_SplitterMoved(object sender, SplitterEventArgs e) {
  mOtherySplitContainer.SplitterDistance = e.SplitX;
}

Если ваш SplitContainer горизонтальный, используйте e.SplitX, если он вертикальный e.SplitY.

...