Как использовать константные строки в коде C # designer.cs? - PullRequest
1 голос
/ 18 мая 2009

Как мне сослаться на постоянную строку в моем файле .designer.cs?

Прямой ответ - создать личную строковую переменную в моем файле .cs, затем отредактировать файл designer.cs, чтобы использовать эту переменную вместо жесткого кодирования строки. Но дизайнеру не нравится, что это выдает ошибку. Я понимаю, почему это не может работать, но я не уверен в том, что является лучшей альтернативой.

Если каждый из моих элементов управления пользовательского интерфейса просто содержит текст в качестве заполнителя, тогда мне нужно переопределить все свойства текста только во время выполнения? Таким образом, я теряю преимущество, видя все в конструкторе.

Я просто пытаюсь понять, как вызвать наименьшее разрушение, когда все изменится в будущем. Спасибо.

Ответы [ 4 ]

5 голосов
/ 18 мая 2009

Файлы *.designer.* создаются Visual Studio. Вы не хотите изменять их вручную, если только вам это не нужно, потому что Visual Studio может порой re генерировать их и стирать ваши изменения.

Что вам действительно нужно, так это думать, что ваша постоянная строка - это ресурс, который вы хотите сделать доступным для дизайнера форм, чтобы при создании кода он использовал этот ресурс.

Есть несколько способов сделать это в Visual Studio. Самым простым, вероятно, является привязка данных для элементов управления. Чтобы продемонстрировать, поместите элемент управления label на форму и посмотрите на свойства элемента управления. Если вы сортируете свойства по имени, в верхней части списка будут заключены два свойства, заключенные в скобки: ApplicationSettings и DataBindings. Если вы сбросите их, вы увидите, что у них обоих есть опции для привязки к свойству Text вашего ярлыка. Используя их, вы можете поместить вашу «постоянную строку» в файл настроек вашего приложения и связать ее с помощью свойства ApplicationSettings или в любом источнике данных и связать с помощью свойства DataBindings. Затем дизайнер форм сгенерирует подходящий для вас код.

4 голосов
/ 18 мая 2009

Мне не совсем понятно, чего вы пытаетесь достичь, но обычно, если вы хотите избежать жесткого кодирования строк в файле конструктора .cs, вы используете файл ресурсов, из которого будут загружаться строки при запуске.

Если вы установите свойство "localizable" формы в значение "true", я считаю, что все автоматически попадет в ресурсы. С другой стороны, я далеко не эксперт в Windows Forms, так что принимайте все это немного щепоткой соли, пока вы не заработаете:)

2 голосов
/ 18 мая 2009

Ваш второй способ - лучшая ставка. Потому что вы не можете предполагать, что дизайнер всегда будет держать ваши изменения рядом, и часто это просто уносит их. Вы захотите внести изменения в элемент управления Page_Init методом события. Это может позволить вашим изменениям отображаться в конструкторе.

http://msdn.microsoft.com/en-us/library/system.web.ui.control.init.aspx

Таким образом, вы можете сохранить свои константы в своем фактическом классе code-behind, которым вы управляете, и элементы управления будут инициированы так, как вы хотите, и вы можете просто контролировать то, что хотите изменить.

Обновление: Извините, не понял, что это WinForms. На самом деле это даже проще в WinForms, потому что вы просто регистрируете свои элементы управления в конструкторе сразу после вызова инициализации элемента управления.

1 голос
/ 18 мая 2009

Какую проблему вы пытаетесь решить? Если вы пытаетесь реализовать локализацию, обратите внимание на функции локализации, которые поставляются с .NET и со спутниковыми сборками.

Если вы пытаетесь решить настройку, посмотрите параметры настройки, доступные в .NET, с помощью редактора настроек.

Зачем вам нужны постоянные строки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...