Джон
просто
Администратор
Offline
Пол:
|
|
« : 31-03-2009 11:51 » |
|
Собственно сабж. Дерево используется для отображения графических элементов в редакторе. В момент редактирования его свойство Enabled ставится в false и пользователь не видит какой именно узел (группу элементов) он редактирует. В нормальном режиме этот узел выделен простой селекцией, которая пропадает при выключении контрола.
Любые предложения принимаются. От жирного текста, до выделения цветом текста или фона узла (node).
ps иконок нет; HideSelection=false
pps Можно простое средство, аналогичное Enabled=false, отрубающее все пользовательские операции с деревом - схлопывание, изменение выбраного узла и тд?
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
RXL
|
|
« Ответ #1 : 31-03-2009 12:30 » |
|
Вариант такой: оставить все как есть и не запрещать дерево, а отключать ему TabStop и закрыть его сверху другим контролом.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #2 : 31-03-2009 12:41 » |
|
Ром, дерево должно быть видимо. Прозрачным контролом закрывать? Пока вот чего сам надыбал: _selectedNode.ForeColor = Color.Red; _selectedNode.BackColor = Color.Yellow; // это не работает ваще! Но есть проблемка. Это не работает, если узел был изначально выбран:
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
RXL
|
|
« Ответ #3 : 31-03-2009 12:53 » |
|
Я тебя просто не правильно понял сперва...
Можно ли как-то иначе показать путь, не в дереве?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #4 : 31-03-2009 13:11 » |
|
Изначальная ситуация такая как на 3-ем фрейме. Допустим Level1_2 выбран. Теперь к нему будет добавлен элемент допустим Level2_6. Альтернативный путь показать в принципе можно, но а) это не предусмотрено концепцией UI; б) надо будет приучать юзера "смотреть туда"; в) это просто некрасиво - выделение убирается (моргает).
В крайнем случае буду убирать выделение у дерева на время редактирования, подсвечивать цветом, а потом восстанавливать и убирать цвет. Но блин это же хвалёный ядрёный .NET, почему элементарные операции должны быть такими сложными. Почему я цвет текста могу менять, а фона нет? Почему нельзя оставить выделение a la HideSelection=false?
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
RXL
|
|
« Ответ #5 : 31-03-2009 13:15 » |
|
Жень, ну что тут сказать... askbill@microsoft.com
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #6 : 31-03-2009 13:37 » |
|
Да не говори. Вроде в некоторых моментах действительно, клёвая штука. Как всё просто, разумно и интуитивно понятно сделано. Маленький код многофункциональных код. А потом БАЦ!!! "Вторая смена! И прощайте родные учителя" (с) И главное же - мелочи, мелочи. И весь выигрыш по времени, уходит на поиск решения вот для таких мелочей.
У меня ща получается пару месяцев С# потом С++ столько же, потом наоборот... вот ща опять к до-диезу привыкаю.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #7 : 31-03-2009 13:39 » |
|
Просто для полноты информации. Потом водичку с эмоциями надо будет почистить.
Тут нашёл совет - запихнуть дерево в Panel, и вырубать её. Эффект такой же. Ничего не изменилось. А в TableLayoutPanel ещё хуже - там даже красного текста не видно в вырубленом состоянии.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #8 : 31-03-2009 13:40 » |
|
Наверно надо было вопрос в теме про холивар с .NEt задать.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #9 : 01-04-2009 03:23 » |
|
Наверно надо было вопрос в теме про холивар с .NEt задать. Джон, это будет слишком жестоко по отношению к NET А не будет решением просто скрыть с экрана контрол ? А на его месте вывести фуфельный битмап с последним снимком дерева ?
|
|
|
Записан
|
|
|
|
sss
Специалист
Offline
|
|
« Ответ #10 : 01-04-2009 05:30 » |
|
ES_NOHIDESEL Negates the default behavior for an edit control. The default behavior hides the selection when the control loses the input focus and inverts the selection when the control receives the input focus. If you specify ES_NOHIDESEL, the selected text is inverted, even if the control does not have the focus.
|
|
|
Записан
|
while (8==8)
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #11 : 01-04-2009 08:51 » |
|
sss, это ты к чему?
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
sss
Специалист
Offline
|
|
« Ответ #12 : 02-04-2009 01:21 » |
|
Этот стиль изменяет поведение выделенного текста в контроле при потере фокуса. Если применен, потеря фокуса не снимает выделение с текста... Этот стиль для строки ввода. Для дерева он тоже есть. Может быть то же значение? Проверь...
P.S.: В VCL данный стиль запрограммирован в свойство дерева класса TTreeView и называется bool HideSelection. Может быть в классе дерева C# тоже есть подобное свойство?
|
|
|
Записан
|
while (8==8)
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #13 : 02-04-2009 01:33 » |
|
sss, читай внимательно - мне надо подсветить не при потере фокуса, а при "выключении" контрола, те установки свойства Enabled=false То про что ты говоришь я тоже уже написал, в C# это называется... HideSelection=false ps иконок нет; HideSelection=false
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #14 : 02-04-2009 01:38 » |
|
Собственно говоря я всё-таки сделал через попу стеклорезом. Как уже описАл выше. При вырубании контрола можно управлять цветом и стилем лэйбла узла.
Геммор заключается в том, что если на него установлен фокус, то тогда это не работает (как видно на анимации в последних двух фреймах). Поэтому я сохраняю выделенный узел, убираю выделение, вырубаю контрол и подсвечиваю лэйбл, при включении контрола делаю обратную операцию - восcтанавливаю выделение, цвет и убиваю фонт узла (свойство NodeFont = null;)
Может кто ещё чего присоветует...
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
sss
Специалист
Offline
|
|
« Ответ #15 : 02-04-2009 03:55 » |
|
Может не использовать Enabled? Блокировать сообщения к дереву от мыши и клавиатуры?
|
|
|
Записан
|
while (8==8)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #16 : 02-04-2009 04:58 » |
|
Джон, ну а с битмапом то не получится ?
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #17 : 02-04-2009 09:00 » |
|
Лёш, да это тоже геммор. Если хорошенько подумать. Один только resize чего будет стоить. Каждый раз новый битмап рисовать? А если окошко уменьшится Может не использовать Enabled? Блокировать сообщения к дереву от мыши и клавиатуры?
Да вот и я уже про это думал, собственно было одним из вариантов решения: pps Можно простое средство, аналогичное Enabled=false, отрубающее все пользовательские операции с деревом - схлопывание, изменение выбраного узла и тд? Но как их ВСЕ отловить чисто и компактно? Тоже геммор. Поиск в инете тоже больших результатов не дал. Самое заманчивое было с панелькой, но к сожалению не сработало. Хотя "унутреннее" чутьё мне подсказывает, что копать надо в этом направлении. Ведь если контрол запихнуть в другой контрол, то в дизанере уже этот контрол уже не достать. Хотя не исключено, что дизайнер работает несколько иначе. Тут у меня ещё маловато опыта.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #18 : 02-04-2009 13:04 » |
|
Просто чтобы логически подытожить (может для FAQ). Начальством (они высоко витают и с волюнтаристской высоты на такие мелочи не обращают внимание) было введено доп. условие - "какого х.. ты с этой фигнёй так долго возишься?". Посему решение было одобрено - сделал подстветку текста с врЕменным снятием выделения в момент выключения, с последующим его восстановлением: private bool _disabledMode = false; private TreeNode _selectedNode = null; public bool DisabledMode { get { return _disabledMode; } set { _disabledMode = value; this.Enabled = !_disabledMode;
if (_disabledMode) { // highlight the selected item in disabled mode _selectedNode = _editorTree.SelectedNode; if (_selectedNode != null) { _notifyParent = false; // здесь и далее просто затычка для хэндлера AfterSelect _editorTree.SelectedNode = null; _notifyParent = true; _selectedNode.ForeColor = Color.Blue; } } else { // reset highlighting on enable if (_selectedNode != null) { _selectedNode.ForeColor = SystemColors.ControlText; _notifyParent = false; _editorTree.SelectedNode = _selectedNode; // restore selected node _notifyParent = true; } } } }
Ну и, если кому хочется, то можно ещё изменить стиль фонта узла: Font font = new Font(SystemFonts.MessageBoxFont, FontStyle.Underline | FontStyle.Bold); _selectedNode.NodeFont = font;
// восстанавливаем очень просто
_selectedNode.NodeFont = null; Этот способ лучше выделения цветом, тк даже в том случае, если узел был изначально выделен, стиль сохраняется (в моём примере жирный подчёркнутый). Т.е. плясать с бубном выделением уже не нужно.
|
ss1.gif (4.18 Кб - загружено 7239 раз.)
|
« Последнее редактирование: 02-04-2009 13:08 от Джон »
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
RXL
|
|
« Ответ #19 : 02-04-2009 18:51 » |
|
Джон, ШЬРЩ, это лучше цвета
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #20 : 03-04-2009 04:46 » |
|
"ШЬРЩ"?
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #21 : 03-04-2009 04:55 » |
|
Рома новую фишку придумал, замена IMHO
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #22 : 03-04-2009 05:46 » |
|
Аааа. Я уже решил, что лучше всего ошарашить немчуру незнакомыми буквами, вот только Р в эту логику не вписывалось. Не, Ром, шефу цвет больше понравился. А подчёркивание он вобще не переваривает - оно ему старые добрые ХМЛовские линки напоминает. зы С фонтом там ещё есть заморочка, не всякий "жирный" (bold) помещается в клиентскую зону лэйбла, а как её расширить я не нашёл. Короче в первой попытке двойка получилась обрезаной примерно наполовину.
|
|
« Последнее редактирование: 03-04-2009 05:48 от Джон »
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
|