#c# #winforms
#c# #winforms
Вопрос:
Я создаю много флажков динамически в c # (Windows forms). Я хочу назначить размеры текстов флажков. Но я не смог найти способ. Я хочу что-то подобное :
CheckBox[] chk = new CheckBox[ff.documentColumnCount];
chk[i].Font.Size = 8.5; // but of course this line doesn't work
что я могу с этим поделать, спасибо за помощь..
Комментарии:
1. -1 Если у вас есть два независимых сегмента кода, не используйте их в одном блоке кода
Ответ №1:
Возможно, что-то вроде этого:
chk[i].Font = new Font(chk[i].Font.FontFamily, 8.5f);
Комментарии:
1. спасибо 🙂 правильное решение: chk [i] . Шрифт = новый шрифт (Font.FontFamily, 8.5f);
2. массив чекоксов не инициализирован
3. Я предположил, что опубликованный выше код был просто иллюстрацией того, что он хотел сделать, а не полным кодом, поскольку он явно просил установить размер флажков, а не как создать и инициализировать их массив.
Ответ №2:
Свойство Font является неизменяемым (см. Примечания). Вы должны назначить свойству Font новый экземпляр класса Font с нужными вам свойствами.
chk[i].Font = new Font( chk[i].Font.FontFamily, 8.5 );
Комментарии:
1. chk[i] в правой части вызовет
NullReferenceException
исключение, потому что chk[i] равно нулю2. @Artur — Я думаю, вы воспринимаете небольшой фрагмент кода слишком буквально. Я предполагаю, что это всего лишь пример того, что пытаются сделать, а не точный код.
3. иногда возникают такие вопросы, когда невозможно определить, допустил ли автор ошибку или просто пропустил ценный фрагмент кода
4. @ArturMustafin хорошо, я вижу, где вы могли интерпретировать это по-другому. Учитывая, что код даже не будет компилироваться (Size — свойство, доступное только для чтения), предполагать, что проблема заключается в NullReferenceException, немного сложно.
Ответ №3:
Вы не инициализировали массив. Вы только что объявили, что существует массив chk
размера ff.DocumentCount
Попробуйте исправить это следующим образом:
CheckBox[] chk = new CheckBox[ff.documentColumnCount];
for(int i=0; i < ff.documentColumnCount; i )
{
chk[i] = new CheckBox() { Location = new Point(0, i * 50), Font = new Font(FontFamily.GenericSansSerif, 8.5f) };
}
Комментарии:
1. Вы должны указать размер в конструкторе. Size — это свойство системы, доступное только для чтения. Рисование.Шрифт.