Member 14137614 Ответов: 2

Как вы можете хранить и получить тип char(32) от свойства.параметры.по умолчанию в C#


У меня есть текстовое поле с параметром maxLength равным 1, которое позволяет пользователю выбрать предпочтительный разделитель для разбора группы целых чисел из другого текстового поля. Их выбор сохраняется в свойствах.Настройки.По умолчанию, а затем извлекается при загрузке. Мой код работает для таких символов, как ',' , '.' , 's' и т. д. , Но не работает для ' '.


Любые идеи для решения этой проблемы приветствуются. Спасибо

Что я уже пробовал:

В private void Form2_Load(object sender, EventArgs e) у меня есть:
txt2Delimiter.Text = Convert.ToString(Properties.Settings.Default.LprefDelimiter);
prefDelimiter = Convert.ToChar(Properties.Settings.Default.LprefDelimiter);

но извлеките разделитель из переменной prefDelimiter, а не из текстового поля.

Я попробовал следующий код:

private void Txt2Delimiter_TextChanged(object sender, EventArgs e)
        {            
            char c1 = (char)32;            
            if (Convert.ToChar(txt2Delimiter.Text) == c1)
            {
                prefDelimiter = c1;
                Properties.Settings.Default.LprefDelimiter = c1;
                Properties.Settings.Default.Save();
            }
            else
            {
                prefDelimiter = Convert.ToChar(txt2Delimiter.Text);
                Properties.Settings.Default.LprefDelimiter = prefDelimiter;
                Properties.Settings.Default.Save();
            }
        }

2 Ответов

Рейтинг:
1

Member 14137614

Спасибо за ответ. Я получил код для работы, попросив пользователя использовать букву "s", Если он хочет использовать пробел в качестве разделителя. Вот код, который работает:

Под Form_Load:
если (конвертировать.ToString(Свойства.Настройки.По умолчанию.LprefDelimiter) != "s")
{ txt2Delimiter.Text=конвертировать.ToString(Свойства.Настройки.По умолчанию.LprefDelimiter);
prefDelimiter = свойства.Настройки.По умолчанию.LprefDelimiter;
}
еще
{
txt2Delimiter.Text = "s";
prefDelimiter = ' ';
}
Затем в разделе text_changed location:
строка delim = "s";
if (txt2Delimiter.Текст == делим)
{
prefDelimiter = преобразовать.Тохар(делим);
Свойства.Настройки.По умолчанию.LprefDelimiter = Преобразовать.Тохар(делим);
Свойства.Настройки.По умолчанию.Сохранить();
}
еще
{
prefDelimiter = преобразовать.ToChar(txt2Delimiter.Text);
Свойства.Настройки.По умолчанию.LprefDelimiter = prefDelimiter;
Свойства.Настройки.По умолчанию.Сохранить();
}


Рейтинг:
0

Richard MacCutchan

Скорее всего, потому, что символ пробела не является допустимым значением в файле настроек XML. Вы можете попробовать использовать какую - то другую строку, чтобы идентифицировать его. Что-то вроде:

string delim = txt2Delimiter.Text;
if (delim == " ")
{
    delim = "sp"
}
Properties.Settings.Default.LprefDelimiter = delim;
Properties.Settings.Default.Save();

Затем, когда вы прочитаете его в следующий раз, просто проверьте строку "sp" или любой другой идентификатор, который вы решите использовать.