Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何动态访问用户控制图?_C#_Winforms - Fatal编程技术网

C# 如何动态访问用户控制图?

C# 如何动态访问用户控制图?,c#,winforms,C#,Winforms,我有一个主窗体和一个用户控件(带有图形)。我正在动态更新图表 void foo(int i) { MainForm MF = (MainForm)MainForm.ActiveForm; if (tb != null) { tb.userGraph.updatesomething(i); // usergraph is the user con

我有一个主窗体和一个用户控件(带有图形)。我正在动态更新图表

 void foo(int i)
        {

            MainForm MF = (MainForm)MainForm.ActiveForm;
            if (tb != null)
            {
                tb.userGraph.updatesomething(i);
               // usergraph is the user control which has graphs
            }

        }
问题是当我离开主窗体时,我无法更新图表。是否有其他方法可以写入用户控件,即使它不是活动窗体?
如果我创建了一个新实例,图表上以前的更新将消失。

我认为最简单的解决方案是在表单和用户控件之间传递usercontrol的引用。例如,在用户控件中创建一个字段

public Form formExample{get;set;}
最初实例化usercontrol时,将引用作为参数传递

userControl usercontrol = new userControl();
usercontrol.formExample = this;
//passing this from the original form will pass a reference of it.

通过这种方式,您现在可以从用户控件访问表单上的图形。如果您想以另一种方式进行操作,即从表单访问用户控件上的图形,只需以另一种方式传递引用即可。我免费输入了这个,但我认为语法都在那里

我通过使用
Application.OpenForms[“表单名称”]
方法解决了这个问题。

你的意思是将所有值传递给用户控件吗?你能详细解释一下情况吗?相对于表单/用户控件,图形放置在何处,值来自何处/您希望在何处结束?通过将表单引用传递给用户控件,您应该能够访问表单的任何值,只要修饰符允许(即公共变量),我有一个“主”表单和两个用户控件“ValueGenerator”和“GraphControl”。我想从值生成器绘制图形,并使用主控件作为活动窗体绘制图形。你所说的是将图形本身作为参考传递?到值生成器?