2011-12-13 7 views
2

Итак, у меня есть GUI с использованием MSVS 2010, и я создаю много форм.Сохранение текстового файла с формами

Моя Основная форма открывает мою текстовую базу данных и объединяет соответствующие данные в другой открытый файл. Если в открывшемся файле есть данные, которые не совпадают в файле базы данных, я хотел бы добавить эти данные в файл базы данных.

С этим сказанным, когда кнопка «dataBaseSaveButton_Click» нажата новая форма появится что есть текстовые поля чтения: машины, имя, PTP Имя, CMP Имя, T-Ширина, питатель Pitch. Большинство полей будут автоматически заполнены, а другие пользователи должны будут войти.

Также в форме есть еще одна кнопка «Сохранить». Теперь в этой форме кнопка сохранения фактически берет данные в текстовые поля и открывает правильный файл (файл базы данных) и сохраняет его (обновляет базу данных) в определенном формате.

"Сохранить Чтобы Data Base" форма выглядит следующим образом:

Save To Data Base Form

Мой код из основной форме выглядит следующим образом (при нажатии на кнопку):

private void dataBaseSaveButton_Click(object sender, EventArgs e) 
{ 
    int unknownCP4Counter = theCP4UnknownList.Distinct().Count(); 

    foreach (var line in theCP4UnknownList.Distinct()) 
    { 
     var splitUnknowns = line.Split(' '); 

     KTS_Save saveForm = new KTS_Save("CP4", splitUnknowns[0], splitUnknowns[1], splitUnknowns[3], splitUnknowns[4], openDataBase2File.FileName, unknownCP4Counter); 

     saveForm.ShowDialog(); 

     unknownCP4Counter--; 
    } 
} 

Код для Сохранить на Базу базы данных вид выглядит следующим образом:

private string _Machine; 
private string _Name; 
private string _PtpName; 
private string _TapeWidth; 
private string _FeederPitch; 
private string _DataBaseFileName; 
public KTS_Save() 
{ 
    InitializeComponent(); 
} 

public KTS_Save(string Machine, string Name, string PtpName, string TapeWidth, string FeederPitch, string DBFileName, int Counter) 
{ 
    InitializeComponent(); 

    _Machine = Machine; 
    _Name = Name; 
    _PtpName = PtpName; 
    _TapeWidth = TapeWidth; 
    _FeederPitch = FeederPitch; 
    _DataBaseFileName = DBFileName; 

    machineTextBox.Text = _Machine; 
    nameTextBox.Text = _Name; 
    ptpNameTextBox.Text = _PtpName; 
    tapeWidthTextBox.Text = _TapeWidth; 
    feederPitchTextBox.Text = _FeederPitch; 
    counterLabel.Text = Counter.ToString(); 
} 

private void dataBaseSaveButton_Click(object sender, EventArgs e) 
{ 
    //This is where I need help. 
} 

Что мне нужно, это на самом деле распечатать все данные текстового поля в файл, который уже существует.

Я знаю, что это, вероятно, не самый эффективный способ сделать что-то, поэтому, если у вас есть какие-либо рекомендации, пожалуйста, дайте мне знать! :)

(Ах да ..)

Я хотел бы программу перспективе как так (или аналогичный):

  • Из основной формы, нажмите на и откроется форма Save To Data Base.
  • Пользователь вводит соответствующие поля (текстовые поля).
  • Пользователь нажмет кнопку «Сохранить на базу данных», и данные будут записаны в текстовый файл, который передается через основную форму.
    • Или иначе пользователь будет щелкнуть верхний правый «X» (закрыть), чтобы не сохранять базу данных.
+0

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

+0

Вы хотите добавить файл или вставить где-нибудь посередине? Кроме того, если вы уже думаете, что это файл базы данных, вы считаете встроенную базу данных, такую ​​как SQLite (она полностью основана на файлах)? – Kiril

+0

@Lirik: Я хотел бы вставить посередине. Если машина помечена как «CP4» в текстовом поле, я хотел бы добавить после строки «*** CP4 ***» в текстовом файле. Другие машины могут быть: CP6, CP7, IP2A. Я рассмотрел это с помощью базы данных ACTUAL, но у меня нет никаких знаний о них :( – theNoobGuy

ответ

1

Вы можете «технически» вставить в файл, но вы в основном должны скопировать весь файл через каждый раз, когда вы что-то вставить. Точнее: это не настоящая вставка, потому что file system does not support inserts. Есть multiple examples online, но я бы рекомендовал вам избежать всего фиаско и использовать встроенную базу данных или файлы XML.

Я очень рекомендую вам использовать базу данных SQLite и использовать ADO .NET Entity Framework, но если это для вас большая проблема, вы можете делать простые XML-файлы.

Вот некоторые примеры:

удачи.

Смежные вопросы