无法绑定 WINFORM 事件tabControl1_Selected列表中的列表框

本文关键字:列表 Selected tabControl1 绑定 WINFORM 事件 | 更新日期: 2023-09-27 18:17:46

MainForm.cs

 public MainForm() 
 {
     InitializeComponent();
     tabControl1.Selected += new TabControlEventHandler(tabControl1_Selected);
 }
 private void tabControl1_Selected(object sender, TabControlEventArgs e)
 {
     //bind listbox
     MyUserControl obj = new MyUserControl();
     obj.LoadListBox();
     obj.Refresh();
 }

在 MyUserControl 中.cs

 public void LoadListBox()
 {
     listBox1.Items.AddRange(JsonConvert.DeserializeObject <object[]> (File.ReadAllText("MyData.json")));
 }

为什么不刷新或绑定?在调试模式下,它显示数据但不显示在 UI 窗体上,有什么线索吗?

无法绑定 WINFORM 事件tabControl1_Selected列表中的列表框

应将用户控件实例添加到 winform。

 private void tabControl1_Selected(object sender, TabControlEventArgs e)
 {
     //bind listbox
     MyUserControl obj = new MyUserControl();
     obj.LoadListBox();
     obj.Refresh();
     this.Controls.Add(obj); //Add control instance to the winform.
 }

我建议在窗体中添加一个Panel控件,并将用户控件添加到此面板。在添加用户控件之前,需要清除面板。但这取决于您的要求。也许您不需要每次都添加控件。所以你应该相应地编写你的代码。

 private void tabControl1_Selected(object sender, TabControlEventArgs e)
 {
     //I guess you have a Panel control named as pnl.
     pnl.Controls.Clear(); //Clear all child control from panel.
     MyUserControl obj = new MyUserControl();
     obj.LoadListBox();
     obj.Refresh();
     pnl.Controls.Add(obj); //Add control instance to the panel.
 }