【问题标题】:Saving to a textfile with forms保存到带有表单的文本文件
【发布时间】:2012-01-19 13:47:30
【问题描述】:

所以我有一个使用 MSVS 2010 的 GUI,我正在创建许多表单。

我的 ma​​in 表单打开我的文本文件“数据库”并将正确的数据连接到另一个打开的文件。如果打开的文件包含与数据库文件不匹配的数据,那么我想将该数据添加到数据库文件中。

话虽如此,当单击“dataBaseSaveButton_Click”按钮时,将弹出一个新表单,其中包含以下文本框:机器、名称、PTP 名称、CMP 名称、T-Width、Feeder Pitch。大多数字段将自动填充,而其他字段则需要用户输入。

表单中还有另一个“保存”按钮。现在,在这个表单上,保存按钮实际上会获取文本框中的数据并打开适当的文件(数据库文件)并以某种格式保存(更新数据库)。

“保存到数据库”表单如下所示:

ma​​in 表单中的代码如下所示(单击按钮时):

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.
}

我需要帮助的实际上是将所有文本框数据打印到已经存在的文件中。

我知道这可能不是最有效的做事方式,所以如果您有任何建议,请告诉我! :)

(哦,是的..)

我希望程序像这样(或类似)运行

  • 主窗体中,单击按钮,将弹出保存到数据库窗体。
  • 用户将在适当的字段(文本框)中输入。
  • 用户将单击“保存到数据库”按钮,数据将写入通过主窗体传入的文本文件。
    • 否则,用户将单击右上角的“X”(关闭)不保存到数据库。

【问题讨论】:

  • 在用户单击保存按钮后,您可以创建一个枚举,按照您想要的顺序保存数据库字段的结构。然后捕获的任何数据都将该数据存储在 List或 Dictionary 这是相当简单的过程..
  • 你想追加到文件还是在中间的某个地方插入?此外,如果您已经认为这是一个数据库文件,那么您是否考虑过像 SQLite 这样的嵌入式数据库(它完全基于文件)?
  • @Lirik:我想在中间插入。如果机器在文本框中标记为“CP4”,我想在文本文件中找到“CP4”行之后附加。其他机器可能是:CP6、CP7、IP2A。我考虑过使用 ACTUAL 数据库来做这件事,但我对它们一无所知:(
  • +1 了解具体细节和图片。

标签: c# winforms streamreader streamwriter


【解决方案1】:

您可以“从技术上”插入文件,但基本上每次插入内容时都必须复制整个文件。更准确地说:它不是真正的插入,因为file system does not support inserts。有multiple examples online,但我实际上建议您避免整个崩溃并使用嵌入式数据库或 XML 文件。

我强烈建议您使用 SQLite 数据库并利用 ADO .NET 实体框架,但如果这对您来说很麻烦,那么您可以创建简单的 XML 文件。

这里有一些例子:

祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    相关资源
    最近更新 更多