因此我的组合框中的列表来自文本文件。该程序允许用户从组合框中选择一个项目。所选项目应从组合框中删除,也可以通过单击按钮从文本文件中删除。
此代码允许程序将文本文件中的项目提取到我的组合框:
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);
}
所以当我开始编程时,组合框中的所选项目现在被删除,但不会删除文本文件。我该怎么办?
答案 0 :(得分:0)
没有“从文本文件中删除一行”这样的事情。你所能做的就是:
方法1)
打开原始文件,将所有行读入List<string>
。然后,遍历所有这些列表条目并删除需要删除的列表条目。然后,将所有列表条目写回文件。
方法2)
将原始文件重命名为某个“备份”文件。打开备份文件以进行读取,并打开具有原始文件名的新文件以进行写入。逐行读取备份文件。将每一行写入输出文件,而不是要删除的行。
答案 1 :(得分:0)
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);