#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
#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

