2010-02-28 2 views
4

Я создаю немного программы типа калькулятора.Сохранение значения по умолчанию для текстового поля C#

У меня есть текстовое поле, которое пользователь может изменить. Это текстовое поле используется в некоторых вычислениях.

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

Например, текстовое поле по умолчанию равно 1,5. Пользователь меняет его на 5, а затем закрывает форму. В следующий раз, когда пользователь открывает форму текстовое поле по умолчанию в настоящее время 5 не 1,5

Любая помощь будет оценена Im новое в этом

ответ

0

Вы можете хранить данные в источнике данных, например, :

  1. Текстовый файл
  2. XML File
  3. Database

в методе Form_Load, вы можете извлечь это значение и установить его в текстовом поле. Предположим, вы пишете в текстовом файле, код будет:

StreamReader re = File.OpenText("MyData.txt"); 
string input = null; 
input = re.ReadLine(); 
txtFormData.Text = input; 
re.close; 
+0

где же я положил это он в виде нагрузки, или когда пользователь изменяет значение? – Christina

+0

Положите его в форму нагрузки. Также при закрытии приложения вам необходимо написать значение текстового поля в текстовом файле. http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=132. – Bhaskar

0

Лучший способ сделать это, чтобы связать ваш текстовый блок DataSource. Источником данных может быть любая вещь в соответствии с вашими требованиями. для, например, если вы предпочитаете файл XML

вот как это работает, используя пример файла XML, values.xml

<Values> 
<default>1.5</default> 
. 
. 
</Values> 

вот как связать ваше текстовое поле значение по умолчанию

string xml = @"<Values><default>1.5</default></Values>"; 

    XElement x = XElement.Parse(xml); 
    var defaultValue = from d in x.Elements("default") 
         select d.Element("default").Value; 

    TextBox1.Text = defaultValue; 
0

И записать окончательный вход обратно в источник данных

  1. в FormClosed обработчик события или
  2. обработчик исключений, который заставит форму закрыть.
7

Скорее всего, у вас нет официального источника данных, такого как база данных. Для ситуаций, подобных этому, используйте .NET application settings architecture для сохранения и восстановления настроек приложения между прогонами.

+0

вы правы, я этого не делаю. Однако я не совсем понимаю объяснение msdn. Дальнейшая помощь? : -S Пожалуйста, id be sooo greatful – Christina

+0

попробовал, и визуальная студия не любит, что у нее проблемы с get и set? – Christina

+0

@Чристина: Какая проблема? Я использовал этот подход несколько раз, поэтому он работает. Поскольку у меня никогда не возникало проблемы, если вы не объясните, какая у вас проблема, никто не сможет помочь. – recursive

0

Я не уверен, что это то, что вам нужно, но когда вы определяете TextBox (через дизайнера), вы можете установить его свойство Text на любое значение. По умолчанию это empty, но это может быть 1.5, если хотите. Если пользователь снова откроет программу, она будет 1,5, а не последней. То же самое было бы верно, если вы закроете форму и снова откроете ее. Нет необходимости сохранять значение где-либо еще, так как это глобальное значение, которое вы всегда хотите использовать.

При желании можно добавить в MainForm_Load() что-то вроде этого: myTextBox.Text = '1.5';

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

0
public partial class Form1 
{ 
    public string defaultValue; 

    private void form2Open_Click(object sender, EventArgs e) 
    { 
     Form2 f = new Form2(); 
     if (defaultValue != null) 
      f.textBox1.Text = defaultValue; 
     f.mainForm = this; 
     f.Show(); 
    } 
} 

public partial class Form2 
{ 
    public Form1 mainForm; 
    private void Form2_Closing(object sender, DontRememberWhatItsCalledEventArgs e) 
    { 
     mainForm.defaultValue = textBox1.Text; 
    } 
} 

Это метод, который я использую, когда сталкиваюсь с аналогичной проблемой того, что у вас есть. (Я не могу проверить это сейчас, но вы должны уметь видеть, что должен делать код :))

0

public partial class Form1 { { public string defaultValue;

private void form2Open_Click(object sender, EventArgs e) 
{ 
    Form2 f = new Form2(); 
    if (defaultValue != null) 
     f.textBox1.Text = defaultValue; 
    f.mainForm = this; 
    f.Show(); 
} 

}

общественного частичного класса Form2 { общественного Form1 MainForm; private void Form2_Closing (отправитель объекта, DontRememberWhatItsCalledEventArgs e) { mainForm.defaultValue = textBox1.Text; } }

0

Другой подход заключается в использовании Application.UserAppDataRegistry Property.

Вот маленький пример:

private void LoadSettings() 
{ 
    textBoxOutput.Text = (String)Application.UserAppDataRegistry.GetValue("SomeName", String.Empty); 
} 

private void SaveSettings() 
{ 
    Application.UserAppDataRegistry.SetValue("SomeName", textBoxOutput.Text); 
} 
Смежные вопросы