【问题标题】:How to access from user control to its child form?如何从用户控件访问其子窗体?
【发布时间】:2019-10-02 00:09:57
【问题描述】:

我有一个在用户控件中显示按钮的子窗体,我想将用户控件中的 ListView 克隆到其子窗体。

我检查了断点并打印了列表,但它给了我错误,例如超出范围或实例变量为零。

public partial class JobForm: Form
{
    public Job()
    {
        InitializeComponent();
    }
    List<string> joblist = new List<string>();
    public List<string> _var
    {

        set {

            joblist = value; }
    }

}

用户控制

private void button_Click(object sender, EventArgs e)
{
    //MessageBox.Show(_var[0].ToString());      
    JobForm jb = new JobForm();
    jb.Show();
}
public List<string> listViewJob()
{
    _var.Add(item);
    return _var;
}
public List<string> _var { get;} = new List<string>();

我还使用了 'var parent = this.Parent 作为 JobForm;父母.ID2 = ID2;但它给了我同样的错误。所以我用断点检查它是一个正确的列表,直到表单显示然后我在用户控件和表单中得到空值或越界(_var)。如果你能写一个例子,我将不胜感激。

【问题讨论】:

  • 你在JobForm中使用usercontrol吗?
  • item 来自哪里?
  • 不,我有另一个表单,它主要用于并有标签页(其中一个是这个用户控件)。有一个函数返回项,我这里没有写函数:) 只要它有效

标签: c# winforms user-controls


【解决方案1】:

JobForm 和用户控件都有一个名为_var 的列表,这非常令人困惑。最好使用更具描述性的变量名称。

我不完全确定您想要实现什么,但基本上,当您创建子表单时,您可以访问它的属性。

例如:

private void button_Click(object sender, EventArgs e)
{
    //MessageBox.Show(_var[0].ToString());      
    JobForm jb = new JobForm();

    // Members of 'jb' are available here
    this._var = jb._var;

    jb.Show();
}

【讨论】:

  • 是的,但问题是我必须使用 User1 user = new User1();也许在这里我应该访问现有的用户控件而不是创建一个新的。
  • @JuanRodre 请将代码和平添加到您的原始帖子中以澄清问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 2016-09-25
  • 1970-01-01
  • 2011-07-23
相关资源
最近更新 更多