Официальный сайт студ.городка НГТУ
Программирование и БД » [C#] Перегрузка свойства Visible 

#1  14.09.06 16:47

[C#] Перегрузка свойства Visible

Народ, подскажите, как по-человечиски можно перегрузить свойство Visible для класса System.Windows.Forms.Button?

Сколько не мучался - ни чего не работает!
Тупо делать класс базирующийся на System.Windows.Forms.Button, а потом добавлять свойство Visible в котором делать все необходимое, после чего устанавливать base.Visible в нужное значение - не канает, не работает! ((

Должно функцианировать так (как собственно и написано сейчас):
1) Пришел запрос на изменение значения Visible
2) смотрим заранее сформированную табличку (в ней ошибок нет точно)
3) если там в нужном месте false, то кнопку не показывам(разультат-false)
4) если там true - смотрим значение, которое пришло из-вне(результат-value)
5) устанавливаем base.Visible должным образом (т.е. по результату)

Все прекрасно заменяется, вот только кнопка не прячется... Есть идеи как это обойти?

Offline

#2  14.09.06 19:06

Re: [C#] Перегрузка свойства Visible

там надо делать овер что то там
что бы функция переопределилась
приведи лучше пример кода

Offline

#3  15.09.06 00:03

Re: [C#] Перегрузка свойства Visible

Код::

public override bool Visible
{
get{
}
set{
}
}

Только правильнее переопределить не свойство Визибл, а метод OnVisibleChanged или еще лучше подписаться на VisibleChanged.

ПС. Гоню: глянул в мсдн, свойство визибл для винконтрола - не виртуальное, поэтому переопределить его нельзя.

Исправлено dotnet (15.09.06 00:06)

Offline

#4  22.09.06 09:52

Re: [C#] Перегрузка свойства Visible

override для Control.Visible делать нельзя!!!
На самом деле уже все сделал! Спасибо!
Пример кода:
class SomeClass: System.Windows.Forms.Button
{
   int formID;
   int itemID;
   // код пропущен
   bool Visible
  {
     set
     {
          try
          {
             bool var = Global.GetVisible(formID,itemID);
             base.Visible = (var)?value:false;
          }
          catch
          {
             base.Visible = true;
          }
     }
     get
     {
          try
          {
             bool var = Global.GetVisible(formID,itemID);
             return (var)?base.Visible:false;
          }
          catch
          {
             return base.Visible;
          }
     }
  }

void override OnCreate()
{
   base.OnCreate();
   this.Visible = true;
}

После этого все работает нормально! )
Основная проблема была в том, что по-умолчанию для параметра Visible устанавливается значение true и, чтобы все нормально работало с самого начала, необходимо первым делом после создания переустановить значение этого параметра! )
// че-то написал, сам не понял что! )

Offline

Программирование и БД » [C#] Перегрузка свойства Visible 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.077 сек.
Выполнено 11 запросов.