2016-06-03 2 views
2

Я работаю над проектом, который использует Викторианский выглядеть и чувствовать себя: enter image description hereСоздание границы AcceptButton невидимую

Проблема, что у меня есть с AcceptButton (или OK или по умолчанию акцепта) кнопки. Очевидно, я могу сделать кнопку прозрачной, и я могу установить границы на ширину 0. Проблема в том, что когда эта конкретная кнопка (заметьте, как кнопка «Отмена» не имеет этой проблемы) отмечена как AcceptButton, она автоматически рисует вокруг нее границу.

Есть ли свойство, которое я могу установить, чтобы это переопределить?

Спасибо!

+0

Когда дизайнер, который указывает кнопку принятия. Если вы запустите приложение, вы не увидите этого, если только эта кнопка, даже отмена, не сфокусирована. Если у вас нет табуляции, установите значение false. –

+0

То, что вы видите, это не кнопка, а фокус indiactor. Вы действительно хотите скрыть фокус от пользователя? Bad ui design, imo. Вы можете сделать это простым владельцем, нарисовав кнопку. – TaW

+0

Я вижу границу даже в приложении, когда я вызываю это диалоговое окно. Я также отключил выделение мыши и выделение мышью. Да, технически, это не очень хороший дизайн пользовательского интерфейса, но это игра, и, традиционно, вы получаете немного больше свободы в пользовательском интерфейсе игры. – zetar

ответ

3

Подкласс кнопку и overide на ShowFocusCues свойства так, что она возвращает значение False:

public class MyButton : Button 
{ 

    protected override bool ShowFocusCues 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 
+0

Я думаю, что у вас есть правильная идея, но мне нужна помощь в реализации. Моя кнопка называется OKButton. И форма - SetScenarioSpeed. В каком файле я должен вставить этот подкласс? – zetar

+1

'OKButton' должен расширять' MyButton'. Таким образом, вы будете иметь классы повторного использования. Из cours 'MyButton' следует назвать лучше :) –

+0

Почему я не вижу переопределяемого свойства' ShowFocusCues'? – mohsen

0

Понял. Вот решение:

OKButton.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 255); //transparent 
+0

Вам также нужно установить 'Width = 0'! – TaW

+0

Примите ваш ответ –

Смежные вопросы