Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Применение вложенных ресурсов






Для тренировки воспользуемся способом хранения и извлечения некоторых сообщений в ресурсах сборки.

  • В панели Solution Explorer вызовите контекстное меню для узла проекта и добавьте командой Add/New Item текстовый файл с любым именем (оставьте по умолчанию)

 

>

  • В панели Solution Explorer вызовите контекстное меню на созданном текстовом файле и командой Rename присвойте ему новое имя StringTable.ru-ru.resText

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

  • В панели Solution Explorer выделите файл StringTable.ru-ru.resText и в панели Properties установите для него следующие директивы:

 

  • Заполните файл StringTable.ru-ru.resText следующими парами ключ=значение
GotoErrorDialogTitle=Go To Line ErrorGotoErrorMsgFormat=Текстовое поле должно\nсодержать целое числоGotoErrorMsgEmpty=Введите число в текстовое полеGotoErrorMsgRange=Выход за границы диапазона
  • Заполните файл GoToDialog.xaml.cs следующим процедурным кодом
using System; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; // Дополнительные подключения пространств именusing System.Resources; using System.Reflection; namespace Notepad1{ public partial class GoToDialog: Window { public GoToDialog() { InitializeComponent(); // Сохраняем первое значение Label _rangeOrigin = _rangeNumber.Content.ToString(); } // Объявляем событие для прослушивания в основном окне public event EventHandler GotoActivate; // Закрытые поля класса int _lineNumber = 0; int _maxLineNumber; ResourceManager res = new ResourceManager(" Notepad1.StringTable", Assembly.GetExecutingAssembly()); String _rangeOrigin; // Свойства доступа public int LineNumber { get { return _lineNumber; } set { _lineNumber = value; _lineNumberTextBox.Text = _lineNumber.ToString(); } } public int MaxLineNumber { get { return _maxLineNumber; } set { _maxLineNumber = value; } } private void OnActivated(object sender, EventArgs e) { // Если существуют обработчики, инициируем событие if (GotoActivate! = null) GotoActivate(this, EventArgs.Empty); _rangeNumber.Content = _rangeOrigin + String.Format(" (1 - {0}): ", _maxLineNumber); _lineNumberTextBox.Focus(); _lineNumberTextBox.SelectAll(); // Выделяем содержимое } private void OkClicked(object sender, RoutedEventArgs e) { // Не закрывать диалог, пока есть ошибки if (string.IsNullOrEmpty(_lineNumberTextBox.Text)) { MessageBox.Show(res.GetString(" GotoErrorMsgEmpty"), res.GetString(" GotoErrorDialogTitle")); return; } if (! int.TryParse(_lineNumberTextBox.Text, out _lineNumber)) { MessageBox.Show(res.GetString(" GotoErrorMsgFormat"), res.GetString(" GotoErrorDialogTitle")); return; } if (LineNumber > _maxLineNumber || LineNumber < = 0) { MessageBox.Show(res.GetString(" GotoErrorMsgRange"), res.GetString(" GotoErrorDialogTitle")); return; } this.DialogResult = true; this.Close(); } private void CancelClicked(object sender, RoutedEventArgs e) { this.DialogResult = false; this.Close(); } }}

Обратите внимание на то, как мы в коде извлекаем ресурсы, вложенные (Embedded) ранее в текстовый файл StringTable.ru-ru.resText.


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал