UserControl будет сражаться с вами зубами и гвоздями, чтобы избежать фокуса. Он имеет код, который автоматически передает фокус на дочерний элемент управления (если он есть), если он получает фокус. Вы, как минимум, должны переопределить WndProc () и заблокировать сообщение WM_SETFOCUS. Могут потребоваться другие операции, такие как ControlStyles.Selectable и свойства TabStop и TabIndex.
Ваша следующая проблема заключается в том, что UserControl не будет реагировать значимо, скажем, на сообщения клавиатуры, если у него есть фокус. Вам нужно будет обнаружить клики на фоне UC для обработки сообщений мыши, а также переопределить картину, так что для пользователя очевидно, что UC имеет фокус (используйте ControlPaint.DrawFocusRectangle). Если это начинает казаться непривлекательным, это потому, что UC действительно предназначался для управления контейнером.
Существует также расширение Visual Studio под названием CompareFiles , которое ничего не делает, кроме добавления записи «Сравнить файлы» в контекстное меню обозревателя решений. Он вызывает встроенный инструмент сравнения Visual Studio.
На всякий случай, если кто-то (например, я) не хочет устанавливать расширение «все в одном», например, VSCommands ...
Код Visual Studio отлично подходит для этого - откройте папку, щелкните правой кнопкой мыши оба файла и сравните.