如何从文本文件中的组合框中删除所选项目
本文关键字:删除 项目 选项 组合 文本 文件 | 更新日期: 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);