无法将全局类中的“Visible”方法应用于 C# 中的多个 winform

我需要你的帮助来处理我正在处理的事情。我是 c# 新手,我正在创建一个包含多个表单的 winforms 应用程序。有一段代码需要出现在所有表单中,但由于我不想在每个表单中复制和粘贴它,我创建了一个存储该代码的类,然后我只想调用该类。>

我需要重复的全局代码如下,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Delfoi_Tourist_Guide
{
    public class Login_User
    {
        public void CheckStatus()
        {
            DialogResult dialogResult = MessageBox.Show("Do your want to disconnect?;","Disconnect",MessageBoxButtons.Yesno);
            if (dialogResult == DialogResult.Yes)
            {
                Welcome form1 = new Welcome();
                form1.Show();
                this.Visible = false;
            }
            else if (dialogResult == DialogResult.No)
            {
                MessageBox.Show("Συνεχίστε την περιήγηση σας!!!");
            }
        }
    }
}

我还向您提供了另一种形式的一部分代码,我在其中应用了我的全局代码

private void linkLabel1_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e)
        {
            Login_User loginUser = new Login_User();
            loginUser.CheckStatus();
        }

我的问题是我无法将“Visible”方法从我的全局类转移到其他类。我想这是因为我的全局类没有附加到 winform。这只是一段全球通用的代码。我做错了什么???

abc12345687 回答:无法将全局类中的“Visible”方法应用于 C# 中的多个 winform

试试这个

public  static void CheckStatus(System.Windows.Form currentForm)
 {
                .....
                currentForm.Visible = false;
                `````
 }

并调用它

   .....
 Login_User.CheckStatus(this);
   .....
,

出现您的问题是因为关键字“this”作为属性应用于表单而不是类。在您的情况下,您必须在 CheckStatus 方法中将表单实例作为参数传递。但由于您希望这适用于您的所有表单,因此您必须键入“表单”一词。下面小编为您解答,

您的全球代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Delfoi_Tourist_Guide
{
    public static class Login_User
    {
        public static void CheckStatus(Form currentForm)
        {
            DialogResult dialogResult = MessageBox.Show("Do your want to disconnect?;","Disconnect",MessageBoxButtons.YesNo);
            if (dialogResult == DialogResult.Yes)
            {
                Welcome form1 = new Welcome();
                form1.Show();
                currentForm.Visible = false;
            }
            else if (dialogResult == DialogResult.No)
            {
                MessageBox.Show("Συνεχίστε την περιήγηση σας!!!");
            }
        }
    }
}

然后您必须将全局代码应用于所需的表单,如下所示。 请注意,您必须将整个类设置为静态才能使其正常工作。

将全局代码应用于表单

        private void linkLabel1_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e)
        {
            Login_User.CheckStatus(this);
        }
本文链接:https://www.f2er.com/4553.html

大家都在问