刷新表单以在 Visual Studio/C# 的组合框中更新和保存新条目

Posted

技术标签:

【中文标题】刷新表单以在 Visual Studio/C# 的组合框中更新和保存新条目【英文标题】:Refreshing Form to update and save new entry in a combobox in Visual Studio/C# 【发布时间】:2016-02-04 19:06:55 【问题描述】:

我已经设置了我的程序,以便用户可以通过单独表单(弹出表单)上的文本框在组合框中输入新行。到目前为止,程序允许新条目并在用户按下“接受”按钮时关闭弹出表单,但是该条目没有出现在组合框中,并且该条目没有保存。

目前查看新条目的唯一方法是通过 .ShowDialog();打开第一个表单的第二个实例的函数。

表格 2

namespace RRAS

    public partial class NewRFRPopup : Form
    
        public NewRFRPopup()
        
            InitializeComponent();
        

        private void btnCancel_Click(object sender, EventArgs e)
        
            this.Close();
        

        private void btnAccept_Click(object sender, EventArgs e)
        
            formRRAS main = new formRRAS();
            string newRFR = txtNewRFR.Text;
            main.AddRFR(newRFR);
            this.Close();
            main.ShowDialog();
        

        private void NewRFRPopup_Load(object sender, EventArgs e)
        

        
    

表格 1 中的 AddRFR

 public void AddRFR(object item)
        
            cmbRFR.Items.Add(item);
        

【问题讨论】:

您可能需要一个事件处理程序...参见this question的答案中的示例 也许刷新组合框有效。试试 cmbRFR,Refresh();之后。 【参考方案1】:

您正在接受处理程序中创建 form1 的新实例:

formRRAS main = new formRRAS();

(这就是为什么当您调用 showdialog 时会出现另一个 formRRAS)。

您需要将原始formRRAS传递给弹出窗口并在传递的实例上调用AddRFR。我会将它传递给弹出窗口的构造函数 - 即

public partial class NewRFRPopup : Form

formRRAS _main;

 public NewRFRPopup(formRRAS main)
 
  InitializeComponent();
  _main = main;
 

然后在您的 Accept 处理程序中:

 string newRFR = txtNewRFR.Text;
 _main.AddRFR(newRFR);
 this.Close();

当然要显示来自 formRRAS 的弹出窗口

NewRFRPopup popup = new NewRFRPopup (this);
popup.ShowDialog();

【讨论】:

太棒了,因为它不需要另一个 formRRAS 实例,有没有办法设置它,以便将项目永久保存到组合框中? 你需要将它保存在某个地方,数据库,文件等。

以上是关于刷新表单以在 Visual Studio/C# 的组合框中更新和保存新条目的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio C/C++ 中的多个构建目标

Visual Studio C/C++ 数组大小未处理的异常堆栈溢出 [重复]

如何使用Mono编译Visual Studio C#项目

带有模板的 Visual Studio C++/CLI 神秘错误

Visual Studio:C++\CLI 包装器程序集路径依赖问题

Visual Studio C ++组合框控件不适用于多字节字符集