Удаление некрасивого маркера выделения в Windows из Splitter в SpitContainer Control
У меня есть SplitContainer
контроль, а Splitter
в середине очень некрасиво. Установив BackColor
из SplitContainer
(вставить цвет здесь), затем установить BackColor
из Panel1
а также Panel2
к белому, у меня может быть мой сплиттер, выглядящий хорошим. Но по умолчанию Windows ставит отметку выбора над Splitter, даже до того, как он выбран.
Как я могу убедиться, что отметка выбора никогда не отображается на Splitter
?
7 ответов
Я думаю, что под "Отборным маркером" вы подразумеваете нечеткую линию, которая указывает на то, что выбран элемент управления. Если вы не хотите, чтобы это отображалось, установите другой элемент управления, который будет выбран при запуске. Что-то вроде:
Textbox1.Selected = true;
Это должно решить вашу проблему, если только один из них не выбран. Тем не менее, это вернется, если вы выберите элемент, чтобы изменить размер чего-либо. В этом случае вы можете поместить что-то в событие mouse_up, чтобы убрать выделение из элемента управления. Таким образом, пользователь перемещает панель разделения, а затем, когда он отпускает, выделение очищается от разделителя.
Другой способ - сделать полосу сплиттера достаточно узкой, чтобы серая нечеткая линия не появлялась. Для этого вы можете сделать следующее (проверено):
splitContainer1.BorderStyle = BorderStyle.FixedSingle;
splitContainer1.SplitterWidth = 1;
Я испытал ту же проблему, и исправил ее, установив TabStop
в False
в окне свойств для SplitContainer1
,
Это может раздражать людей, которые используют или настаивают на использовании клавиатуры для управления каждым аспектом вашей формы, но кроме этого она будет работать. Элементы управления внутри SplitContainer будут по-прежнему доступны для вкладок, но не сам SplitContainer.
Этот код переместит фокус с splitContainer на TreeView вскоре после перемещения.
private void splitContainer1_SplitterMoved(object sender, SplitterEventArgs e) {
if(this.splitContainer1.CanFocus) {
this.splitContainer1.ActiveControl = this.treeView1;
}
}
Вы можете добавить обработчик событий, чтобы украсть фокус из контейнера на MouseUp... Это немного грязно, но работает.:)
Я много пытался удалить сплиттер, но ничего не получалось. Я сделал несколько иное, почему нам нужно использовать сплиттер, для этого мы можем использовать элемент управления Picture Box, чтобы его ширина (или) высота зависела от вашего проекта, установленного 5 или 3 .... после события перемещения окна рисунка напишите код наподобие... picture box свойство-курсор изменить тип курсора 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...
}
его работа, потому что я много пытался для этого, и я сам нашел этот метод...
Самое простое решение, которое я нашел / сделал - создать кнопку, выбрать ее и скрыть. Все через код. с этим нет никаких побочных эффектов или проблем, поместите это в событие загрузки форм.
Button DeSelectButton = new Button();
this.Controls.Add(DeSelectButton);
DeSelectButton.Select();
DeSelectButton.Visible = false;