Подклассированный текстовый шрифт только для чтения не распознается в форме - PullRequest
0 голосов
/ 24 марта 2009

Построение моих базовых классов для элементов управления пользовательского интерфейса идет туда. У меня есть командные кнопки, полученные с пользовательским назначением шрифта и помещенные в форму, все в порядке ... Однако идентичный код для свойства только для чтения Шрифт текстового поля НЕ распознается должным образом в той же форме. Он ТОЛЬКО принимает настройку FORM и игнорирует собственное объявление Font.

public class MyTextbox : TextBox
{
    [ReadOnly(true)]
    public override Font Font
    { get { return new 
             Font( "Courier New", 12f, FontStyle.Regular, GraphicsUnit.Point ); 
          } 
    }
}

Ответы [ 2 ]

1 голос
/ 24 марта 2009

Свойство Font является окружающим свойством. Если он никогда не был назначен, он автоматически соответствует свойству Font элемента управления контейнера. Вы никогда не назначали это.

Сделай так:

public class MyTextbox : TextBox {
    Font mFont;
    public MyTextbox() {
        base.Font = mFont = new Font("Courier New", 12f, FontStyle.Regular, GraphicsUnit.Point);
    }

    [ReadOnly(true)]
    public override Font Font {
        get { return mFont; }
    }
}
0 голосов
/ 25 марта 2009

С помощью "nobugz" (спасибо) я обнаружил эту же ошибку, когда делал ComboBox. Мой результат был следующим ...

Мой добытчик

get { return new Font( ... ); }

Однако в ответе nobugz что-то не совсем правильно работало с компилятором, поэтому в конструкторе класса

clas MyTextbox...
{
   public MyTextbox()
   {
      // it defaults itself from its own read-only font "new" object instance and works
      base.Font = Font;
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...