我试图在创建一个包含数据的新捕获文件后立即更新我的 ComboBox。如果我关闭表单并重新打开它,它显然已更新,但这似乎是一种廉价的编程方式。 (快速关闭表格并打开一个新表格)到目前为止,当我想起重新填充 ComboBox 的方法时,它似乎包括现有数据并硬拷贝所有内容。
我现在的代码:
表单加载后立即执行:
private void FormCapSave_Load(object sender, EventArgs e)
{
DirectoryInfo(@"C:\Users\pc\Documents\textfolder");
FileInfo[] Files = d.GetFiles("*.cap");
foreach (FileInfo file in Files)
{
if (!comboBoxSaveCap.Items.Contains(file))
{
comboBoxSaveCap.Items.Add(file.ToString());
}
}
后面是添加新 Cap 文件的按钮:
private void buttonFormSaveAdd_Click(object sender, EventArgs e)
{
Form1.AfterNamingCapFile();
if (Program.MainForm.boolSave == false)
{
labelFormSaveException.ForeColor = Color.Tomato;
labelFormSaveException.Text = "Cap exists";
}
else
{
labelFormSaveException.ForeColor = Color.Green;
labelFormSaveException.Text = "Cap file added";
ResetForm();
}
}
我的重置表单();基本上是第一个加载方法的副本:
private void ResetForm()
{
DirectoryInfo(@"C:\Users\pc\Documents\textfolder");
FileInfo[] Files = d.GetFiles("*.cap");
foreach (FileInfo file in Files)
{
if (!comboBoxSaveCap.Items.Contains(file))
{
comboBoxSaveCap.Items.Add(file.ToString());
}
}
}
最佳答案
在重新填充之前,您需要清除组合框的内容。
private void ResetForm()
{
DirectoryInfo d = new
DirectoryInfo(@"C:\Users\pc\Documents\textfolder");
FileInfo[] Files = d.GetFiles("*.cap");
comboBoxSaveCap.Items.Clear(); // Missing this bit
foreach (FileInfo file in Files)
{
if (!comboBoxSaveCap.Items.Contains(file))
{
comboBoxSaveCap.Items.Add(file.ToString());
}
}
}
关于c# - 我在更新我的 ComboBox 时遇到问题,一旦我想起填充 ComboBox,我就会得到所有重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56358340/