C# 识别相同表单的实例

C# 识别相同表单的实例,c#,winforms,C#,Winforms,我们如何识别相同形式的实例 这是我的问题: 我只想显示同一表单的每个实例一次 我做到了: for(int l=0;l

我们如何识别相同形式的实例

这是我的问题: 我只想显示同一表单的每个实例一次 我做到了:

for(int l=0;l<2;l++)
{
cameraInstance[l]。开始();
if(cameraInstance[l].MoveDetection==true)
{
Formes.CameraViewVS f1=新的Formes.CameraViewVS(cameraInstance[l],adresseIPArray[l]);
foreach(Application.OpenForms中的表单S)
{
if((S.GetType()==typeof(Formes.CameraViewVS))&&(cameraInstance[l].adresse==f1.IP))
{
美国Show();
cameraInstance[l].MoveDetection=false;
返回;
}
}
f1.所有者=此;
f1.Show();
}             
}
有什么想法吗

类似这样的问题,问题中没有足够的细节来给出准确的答案:

            foreach (Form S in Application.OpenForms)
            {
                var frm = S as Formes.CameraViewVS;
                if (frm != null && frm.Addresse == cameraInstance[l].adresse) {
                    // Match, activate it
                    cameraInstance[l].MoveDetection = false;
                    frm.WindowState = FormWindowState.Normal;
                    frm.Activate();
                    return;
                }
            }
            // No match found, create a new one
            var f1 = new Formes.CameraViewVS(cameraInstance[l], adresseIPArray[l]);
            f1.Show(this);

假设CamerViewVS有一个公共地址属性。

代码中有一个错误,您没有正确检查表单S的“ADRESE”属性。我测试了它的检查性能,但问题是条件:(S.GetType()==typeof(Formes.CameraViewVS),我不知道如何访问每个实例,因为所有实例都有相同的类型Formes.CameraViewVS),这不是您的问题。首先像现在一样检查类型,然后将S强制转换为CameraViewVS,以便访问其属性并比较“addresse”。您可以使用GetHashCode()作为唯一的表单实例identifier@Hans当前位置我如何才能向CameraviewVS投S这应该是个问题吗?它甚至不是有效的代码。一旦你准备好制定一个合适的问题,请单击“提问”按钮,这不是一个论坛。嗨,Hans,我在CameraViewVS中添加了复选框,我想用相同的方法检索它的值,我使用了propertyNAme get{return f1.checkbox.checked;},但我只检索第一个值,当我更改(选中或取消选中)时,什么也不会发生。我必须检索每个实例(Formes.CameraViewVS)的复选框的值。我提到上面的循环是在一个计时器内。有什么帮助吗?这和这个问题有什么关系?同样,这不是一个你可以不断提问的论坛。这是一个问答网站,一个问题,一个答案。如果您还有其他问题,请单击“提问”以创建新问题。
            foreach (Form S in Application.OpenForms)
            {
                var frm = S as Formes.CameraViewVS;
                if (frm != null && frm.Addresse == cameraInstance[l].adresse) {
                    // Match, activate it
                    cameraInstance[l].MoveDetection = false;
                    frm.WindowState = FormWindowState.Normal;
                    frm.Activate();
                    return;
                }
            }
            // No match found, create a new one
            var f1 = new Formes.CameraViewVS(cameraInstance[l], adresseIPArray[l]);
            f1.Show(this);