Fuhrer писал(а):Qwertiy писал(а):Нельзя перетаскивать флажок на кнопку (но при желании можно написать).
Думаю, надо бы попробовать. Я уже не так уверен, что это будет лучше, но попробовать хотелось бы.
Это возможно, хотя я не очень представляю, как показать, что флажок находится над кнопкой... Заставить её помигать, что ли...
Fuhrer писал(а):Qwertiy писал(а):2. Перетаскивание кнопки на флажок (тоже с изменением текста, но только её).
Этого не видно. То есть этого вообще не видно. Я имею ввиду то, что пользователь не будет перечитывать текст на кнопке, которую он тащит. И не догадается, и не сможет прочесть. Кроме того, во множестве случаев слово "всё" уходит за пределы окна, и его нельзя увидеть даже если специально вчитываться. Это не особая проблема, просто смена надписи на перетаскиваемой кнопке почти бесполезна.
Это сделано из чисто логических соображений, а не практических... Когда кнопка находится над флажком, он нажимается, но меняется только эта кнопка, а все остальные неизменны. Обратите внимание, что это действие не снимает флажок, если он был установлен до перетаскивания. В принципе, я думал сделать xor, но решил, что это было бы нелогично.
Fuhrer писал(а):Qwertiy писал(а):3. Нестандартная обработка стрелок в области кнопок.
Тут имхо всё отлично. Только не работает при нажатом шифте. Это делалось отдельными обработками нажатия клавиш?
Да, это делалось обработкой события PreviewKeyDown, причём весьма криво. Действие делается с учётом того, что после этого система производит ещё одно действие (оно не заменяется, а процедура выполняется первой)
Код: Выделить всё
Private Sub Btn_PreviewKeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles BtnSkip.PreviewKeyDown, BtnReplaceSmall.PreviewKeyDown, BtnReplaceOld.PreviewKeyDown, BtnReplace.PreviewKeyDown, BtnRename.PreviewKeyDown, BtnOther.PreviewKeyDown, BtnDelete.PreviewKeyDown, BtnCancel.PreviewKeyDown, BtnAppend.PreviewKeyDown
If Clickable Then
Dim TabIndex As Integer = sender.TabIndex
Select Case e.KeyData
Case Keys.Right
TabIndex += 0 '1
Case Keys.Left
TabIndex -= 0 '1
Case Keys.Up
TabIndex -= 2 '3
If TabIndex < 0 Then TabIndex = 0
Case Keys.Down
TabIndex += 2 '3
If TabIndex > 8 Then TabIndex = 8
End Select
For Each Ctrl As Control In Me.Controls
If Ctrl.TabIndex = TabIndex Then
Ctrl.Select()
Exit Sub
End If
Next Ctrl
End If
End Sub
Думаю, сюда можно добавить обработку Shift, хотя гарантировать не могу... Да и не очень вижу причин для использования Shift+Стрелка...
Fuhrer писал(а):Qwertiy писал(а):4. Обработка удерживаемого Ctrl.
Пожалуй, лучше не бывает.
Мне тоже показалось, что так логичнее... Но, заметьте, Ctrl всё равно работает как переключатель, а не как флаг.
Fuhrer писал(а):Qwertiy писал(а):5. Возможность установить действие для непроходящих по основному условию файлов.
Это я предлагаю обсудить отдельно.
Думаю, можно сворачивать соответствующую часть формы...
Fuhrer писал(а):Диалог понравился, он заметно эргономичнее нынешнего. Но кое-что мне в нём не понравилось.
1. Информацию о файле-приёмнике и файле-источнике желательно показывать в одном окне, для лёгкости сравнения. Неплохо, если это влезет в само окно о замене. Тогда пользователь, принимая решение о замене (единичного файла), сможет использовать максимум данных при минимуме лишних телодвижений.
2. Вместо сравнения только размеров (кнопка под ссылками файлов), неплохо бы сразу сравнить и даты. Хотя бы даты изменения.
3. Если кнопка "Переименовать" вызывает новый диалог, она должна обзываться "Переименовать...". Хотя как по мне, то я бы переименовывал на месте. В следующем посте постараюсь показать свои идеи на эту тему.
4. Фраза "Удалить источник" встречается в тексте 3 раза. И это при том, что в случае копирования она вообще должна отсутствовать в этом диалоге. Кроме того, я бы вообще немного убрал бы эту опцию. В большинстве случаев вместо неё можно пропустить всё, а потом удалить остаток.
1. На этот раз я не показываю окон, а только говорю о том, что именно надо сделать. С этим пунктом я согласился ещё в прошлый раз.
2. Не вижу смысла. Размер в большей мере позволяет судить об одинаковости файлов. Если же нужно заменить более старый, то есть соответствующая кнопка.
3. Насчёт многоточия согласен, хотя оно там не очень смотрится. Существующий диалог переименования меня вполне устраивает, надо только добавить в него выбор периименовываемого файла.
4. Надо сворачивать низ формы... При копировании соответствующий Enabled=False в целях единства интерфейса с диалогом при перемещении - нелогично помещать на это место разные кнопки. Кроме того, с помощью Enabled=False надо будет запрещать кнопки, задействованные в используемых правилах.
Fuhrer писал(а):Рисунок кнопки "для всех" немного не влезает на самой кнопке.
Он прекрасно помещается - там использовано BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom, а на самом рисунке достаточно свободного места для рамки флажка. То, что так отображается дискета, является следствием преобразования рисунка из 256*256 в 63*63...
Что касается Вашего диалога, то мне кажется, он менее удобен, чем существующий... А по сравнению с моим, в нём нет (как минимум) возможности применить "Удалить источник" только к текущему файлу. Что касается увеличенной высоты кнопок, то она мне никогда не нравилась (чисто визуально)...