Оформление при Enabled = False

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Оформление при Enabled = False

Сообщение natcap » 29.09.2009 (Вт) 16:46

Вопрос таков: есть кнопка, ей прописан графический фон... когда ей ставишь Enabled = False (ну надо ее заблочить - что поделать) текст становиться грязносерым и невидным на фоне кнопки.. как поменять цвет?

и еще смежный вопрос ... по таймеру обновляется значение Label. Label на TableLayautPanel. На панели фон графический... все это временами дергается белой полосой.. это излечимо?
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Оформление при Enabled = False

Сообщение Nord777 » 29.09.2009 (Вт) 19:35

когда ей ставишь Enabled = False (ну надо ее заблочить - что поделать) текст становиться грязносерым и невидным на фоне кнопки.. как поменять цвет?
Создай класс, унаследованный от Button и переопредели в нем процедуру OnPaint(в ней и рисуй любым цветом)

На панели фон графический... все это временами дергается белой полосой.. это излечимо?
Да, двойная буферизация. Также создавай новый класс...
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Re: Оформление при Enabled = False

Сообщение natcap » 29.09.2009 (Вт) 21:45

Спасибо за совет...

знать бы еще как :(
я вообще до 2008 Net дел с классами не имела :(

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Оформление при Enabled = False

Сообщение Nord777 » 30.09.2009 (Ср) 0:03

Кнопка:
Код: Выделить всё
Imports System.Windows.Forms.VisualStyles
Public Class myButton
   Inherits Button

   Private state As PushButtonState = PushButtonState.Normal

   Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
      MyBase.OnPaint(e)
      Dim Sf As New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}
      ButtonRenderer.DrawButton(e.Graphics, Me.ClientRectangle, state)
      e.Graphics.DrawString(Me.Text, Me.Font, Brushes.Black, Me.ClientRectangle, Sf)
   End Sub

   Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
      MyBase.OnMouseDown(e)
      Me.state = PushButtonState.Pressed
      Invalidate()
   End Sub

   Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
      MyBase.OnMouseUp(e)
      OnMouseEnter(e)
   End Sub

   Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs)
      MyBase.OnMouseEnter(e)
      Me.state = PushButtonState.Hot
      Invalidate()
   End Sub

   Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs)
      MyBase.OnMouseLeave(e)
      If Me.Focused Then
         Me.state = PushButtonState.Default
      Else
         Me.state = PushButtonState.Normal
      End If
      Invalidate()
   End Sub

   Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
      MyBase.OnMouseMove(e)
      If (e.Button And MouseButtons.Left) = MouseButtons.Left And _
          Not Me.ClientRectangle.Contains(e.Location) And _
          state = PushButtonState.Pressed Then
         OnMouseLeave(e)
      End If
   End Sub


Панель:
Код: Выделить всё
Public Class myTableLayoutPanel
   Inherits TableLayoutPanel

   Sub New()
      Me.DoubleBuffered = True
   End Sub
End Class


После компиляции проекта эти контролы сможешь найти на панеле элементов.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Re: Оформление при Enabled = False

Сообщение natcap » 30.09.2009 (Ср) 0:52

Спасибо огромаднейшее :) заодно немного поняла что за зверь OnPaint :shock:

Правда все равно осталось не совсем понятным, как задавать вид ля залоченой кнопки?
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Оформление при Enabled = False

Сообщение iGrok » 30.09.2009 (Ср) 2:14

natcap писал(а):Спасибо огромаднейшее :) заодно немного поняла что за зверь OnPaint :shock:

Правда все равно осталось не совсем понятным, как задавать вид ля залоченой кнопки?

Думаю, проверять в OnPaint св-во "Enabled", и рисовать кнопку в зависимости от него..
label:
cli
jmp label

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Оформление при Enabled = False

Сообщение Nord777 » 30.09.2009 (Ср) 8:11

как задавать вид ля залоченой кнопки?
PushButtonState.Disabled

Добавь это в класс
Код: Выделить всё
   Protected Overrides Sub OnEnabledChanged(ByVal e As System.EventArgs)
      MyBase.OnEnabledChanged(e)
      If Me.Enabled Then
         If Me.Focused Then state = PushButtonState.Default Else state = PushButtonState.Normal
         Me.Invalidate()
      Else
         state = PushButtonState.Disabled
      End If
   End Sub
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Dmitry81
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 52
Зарегистрирован: 20.06.2009 (Сб) 0:43
Откуда: Украина, Запорожье

Re: Оформление при Enabled = False

Сообщение Dmitry81 » 30.09.2009 (Ср) 10:51

ИМХО, при установке свойства enabled контрола в false неспроста он перерисовывается в "серых тонах" - так СРАЗУ видно, что он заблокирован от поползновений юзверя.
Не очень понимаю, зачем имитировать в этом случае его внешний вид как при enabled=true.
Хотя... в познавательных целях разве что.
А.Эйнштейн: Есть две бесконечные вещи - вселенная и человеческая глупость. Хотя, насчет вселенной я сомневаюсь...

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Re: Оформление при Enabled = False

Сообщение natcap » 30.09.2009 (Ср) 12:31

Спасибо за код :)

Dmitry81, разве хоть слово было сказано что КАК при enabled=true? просто дизайн формы не виндовопримитивный, а блин с дизайнерскими отрисовками мне на голову... а темно-сине-глянцевый фон кнопки и грязносерый текст на ней - выглядит мягко говоря...
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Re: Оформление при Enabled = False

Сообщение natcap » 02.10.2009 (Пт) 13:05

2 дня к сожалению не было возможности затестить код..
сегодня опробовала, с панелью все СУПЕЕЕЕР! Ура. это дурацкое дерганье пропало.. а вот с кнопкой совсем не ICE :( вон ей не задать, вид не поменять, выглядит ТОЛЬКО как system без вариаций, уже и с бубном танцевала - не помогло :(
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Оформление при Enabled = False

Сообщение Nord777 » 02.10.2009 (Пт) 15:08

вот с кнопкой совсем не ICE вон ей не задать, вид не поменять, выглядит ТОЛЬКО как system без вариаций
Ну тогда надо нарисовать картинки всех состояний твоей дизайнерской кнопки и отрисовывать их.
замени
ButtonRenderer.DrawButton(e.Graphics, Me.ClientRectangle, state)
на
e.Graphics.DrawImage(...)
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

raserg
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 24.01.2009 (Сб) 0:35
Откуда: Одесса

Re: Оформление при Enabled = False

Сообщение raserg » 05.10.2009 (Пн) 18:44

Во вложении различные цветовые эффекты с кнопками.комбобоксами,листбоксами и т.д

Код: Выделить всё

         Me.TabControl1 = New ResourseDLL.TBTabControl
        Me.TabPage2 = New ResourseDLL.TBTabPage
        Me.Button8 = New ResourseDLL.TBButton
        Me.Button5 = New ResourseDLL.TBButton 

Создадите необходимые контролы,а потом переопределите
Вложения
ResourseDLL.rar
(30.56 Кб) Скачиваний: 60

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Оформление при Enabled = False

Сообщение Nord777 » 05.10.2009 (Пн) 19:40

raserg, ты злой человек.
Если natcap воспользуется этой библой, её с работы выгонят. :wink:
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Re: Оформление при Enabled = False

Сообщение natcap » 05.10.2009 (Пн) 20:37

я то думала там исходник... а готовый dll цеплять неизвестный, спасибо, не хочется :)))))
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

raserg
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 24.01.2009 (Сб) 0:35
Откуда: Одесса

Re: Оформление при Enabled = False

Сообщение raserg » 05.10.2009 (Пн) 22:21

А вот и исходник
Вложения
src.rar
(204.9 Кб) Скачиваний: 59


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 36

    TopList