如何从文本文件中的组合框中删除所选项目

本文关键字:删除 项目 选项 组合 文本 文件 | 更新日期: 2023-09-27 17:52:11

所以我的组合框中的列表来自一个文本文件。该程序允许用户从组合框中选择一个项目。选中的项目应该通过单击按钮从组合框和文本文件中删除。

这段代码允许程序从文本文件中获取项目到我的组合框:

string location = @"C:''Users''LMCPENA98''Desktop''COE114LPROJECT_MILLENNIUM_PAWS''MillenniumPaws''MillenniumPaws''bin''Debug''Files.txt";
string[] temp = File.ReadAllLines(location);
int[] TagNumber = new int[temp.Length];
string[] Breed = new string[temp.Length];
string[] Name = new string[temp.Length];
decimal[] Price = new decimal[temp.Length];
//Getting all the values i the text file
for (int i = 0; i < TagNumber.Length; i++)
{
TagNumber[i] = int.Parse(temp[i].Substring(0, temp[i].IndexOf("-")));
Breed[i] = temp[i].Substring(0, temp[i].IndexOf("+"));
Breed[i] = Breed[i].Substring(Breed[i].LastIndexOf("-") + 1);
Name[i] = temp[i].Substring(0, temp[i].IndexOf("="));
Name[i] = Name[i].Substring(Name[i].LastIndexOf("+") + 1);
Price[i] = decimal.Parse(temp[i].Substring(temp[i].LastIndexOf("=") + 1));
}
Pound p;
for (int i = 0; i < Breed.Length; i++)
{
if (Breed[i] == cmbBx_breed.Text)
 {
  p = new Pound(TagNumber[i], Name[i], Price[i]);
  cmbBx_opts.Items.Add(p.GetEntry());
  }
 }
}
else
{
cmbBx_breed.Text = null;
}

我是这样让程序知道我已经选择了一个项目的:

private void btn_buy_Click(object sender, EventArgs e)
{
    new MessageBox_TYBuying().Show();
    cmbBx_opts.Items.Remove(cmbBx_opts.SelectedItem);
}

所以当我开始编程时,组合框中选中的项目现在被删除了,但没有在文本文件上。我该怎么做?

如何从文本文件中的组合框中删除所选项目

没有"从文本文件中删除一行"这样的事情。你所能做的就是:


方法1)打开原始文件并将所有行读入List<string>。然后,遍历所有这些列表条目并删除需要删除的条目。然后,将所有列表项写回文件。

方法2)
将原始文件重命名为某个"备份"文件。打开备份文件进行读取,打开一个具有原文件名的新文件进行写入。逐行读取备份文件。除要删除的行外,将每一行写入输出文件。

c++ Win32解决方案

char deleteCharArray[50];
int index = SendDlgItemMessageA(hDlg, ID_COMBOFILE, CB_GETCURSEL, 0, 0);
SendDlgItemMessageA(hDlg, ID_COMBOFILE, CB_GETLBTEXT, index, (LPARAM)deleteCharArray);
SendDlgItemMessageA(hDlg, ID_COMBOFILE, CB_DELETESTRING, index, 0);
    
vector<string> dataArray;
ifstream myFile("fileName.txt");
     
string line;
while (getline(myFile, line))
{
    dataArray.push_back(line);
}
     
string deleteThis = string(deleteCharArray);
     
for (auto it = dataArray.begin(); it != dataArray.end(); ++it)
{
    if (deleteThis == *it)
    {
        dataArray.erase(it);
        break;
    }
}
     
ofstream outFile("fileName.txt");
ostream_iterator<std::string> output_iterator(outFile, "'n");
copy(dataArray.begin(), dataArray.end(), output_iterator);