Я хочу нарисовать свой собственный TabControl с другим стилем. У меня есть TabControl в моей форме, для которого я добавил обработчик события,
MainTabControl.DrawMode = TabDrawMode.OwnerDrawFixed
AddHandler MainTabControl.DrawItem, AddressOf TabControlPaint
TabControlPaint () - это метод, в котором я рисую свою собственную графику, используя переменные Bitmaps и буфера. (см. здесь )
Я не наследую от TabControl, потому что мое приложение имеет много форм и windows, и это заставит меня go для каждой формы и изменить TabControl для мой CustomTabControl. Я хотел бы иметь возможность рисовать свои собственные вкладки, перезаписывая событие DrawItem.
Я получил этот результат Снимок экрана , где вы можете видеть красную рамку, другой цвет фона для вкладок, даже выбранные различные цветовые схемы для вкладки.
Что я не могу понять, так это стереть эту белую трехмерную рамку, которая появляется только на выбранной вкладке . Я предполагаю, что рисуется сверху, когда метод OnPaint () вызывается после события drawItem (поправьте меня, если я ошибаюсь). Если я отлаживаю, эта белая трехмерная граница появляется после того, как метод TabControlPaint (тот, который я вызываю для события DrawItem) завершил выполнение.
Чтобы сделать вопрос более понятным, я хочу создать свой собственный TabControl, не переписывая метод OnPaint. То, что я придумала до сих пор, не было успешным только из-за этой windows нарисованной границы. Есть ли способ снять его? Или вы знаете какие-либо альтернативы?