Удаление уродливой маркировки Windows с помощью Splitter в SpitContainer Control
У меня есть элемент управления SplitContainer
, а Splitter
посередине очень уродливый. Установив BackColor
для SplitContainer
для (введите цвет здесь), затем установите BackColor
of Panel1
и Panel2
на белый, я могу скрыть свой сплиттер. Но по умолчанию Windows помещает метку выделения поверх Splitter, даже до ее выбора.
Как я могу убедиться, что знак выбора никогда не отображается на Splitter
?
![enter image description here]()
Ответы
Ответ 1
Я думаю, что с помощью "Selection Marker Crap" вы подразумеваете нечеткую линию, которая указывает, что элемент управления выбран. Если вы не хотите, чтобы это отображалось, установите другой элемент управления, который будет выбран при запуске. Что-то вроде:
Textbox1.Selected = true;
Это должно решить вашу проблему, если только один из них не выбран. Однако это вернется, если вы выберете элемент для изменения размера. В этом случае вы можете поместить что-то в событие mouse_up, чтобы переместить выделение элемента управления. Таким образом, пользователь перемещает панель разделителей, а затем, когда они отпускают, выбор очищается от сплиттера.
Другим способом было бы сделать панель сплиттера достаточно узкой, чтобы серая нечеткая линия не отображалась. Для этого вы можете сделать следующее (проверено):
splitContainer1.BorderStyle = BorderStyle.FixedSingle;
splitContainer1.SplitterWidth = 1;
Ответ 2
Я столкнулся с той же проблемой и исправил ее, установив TabStop
в False
в окне "Свойства" для SplitContainer1
.
Это может раздражать людей, которые зависят или настаивают на использовании клавиатуры для работы с каждым аспектом вашей формы, но кроме этого она будет работать. Элементы управления внутри SplitContainer будут сохраняться в режиме табуляции, а не сам SplitContainer.
Ответ 3
Этот код будет перемещать фокус из splitContainer в TreeView вскоре после перемещения.
private void splitContainer1_SplitterMoved(object sender, SplitterEventArgs e) {
if(this.splitContainer1.CanFocus) {
this.splitContainer1.ActiveControl = this.treeView1;
}
}
Ответ 4
Вы можете добавить обработчик события, чтобы украсть фокус из контейнера на MouseUp... Это немного грязно, но он работает.:)
Ответ 5
Я много старался удалить сплиттер, но ничего не получилось. Я сделал несколько раз, почему нам нужно использовать сплиттер для того, чтобы мы могли использовать управление ящиком изображения, чтобы ширина (или) высоты зависела от вашего набора проектов 5 или 3.... после того, как мышь с изображением коробки переместила код записи события, например... picturebox свойство-cursor изменить тип курсора Hsplit его выглядит как сплиттер
private void picturebox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)//this for mouse left click its work
{
//write you code here if you use panel set panel height or width it reaches...
Cursor.Position = new Point(e.X, e.Y); // this for mouse cursor position according your //project do some fine tune you will get its work...
}
его работа, потому что я попробовал много для этого, и сам я нашел этот метод...
Ответ 6
Я установил TabStop в false, и он ушел.
Ответ 7
Самое простое решение, которое я нашел/сделал - создайте кнопку, выберите ее и скройте.
Все через код. нет побочных эффектов или проблем с этим, поместите его в событие загрузки форм.
Button DeSelectButton = new Button();
this.Controls.Add(DeSelectButton);
DeSelectButton.Select();
DeSelectButton.Visible = false;