无法将全局类中的"Visible"方法应用于 C# 中的多个 winforms



我正在处理一件事,需要你的帮助。我是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();
}

我的问题是我不能转移"可视"方法从我的全局类转移到其他类。我想这是因为我的全局类没有附加到窗体上。它只是一段被全球使用的代码。我做错了什么?

try this

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

命名为

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

出现问题是因为关键字"this"作为属性应用于窗体,而不是类。在这种情况下,您必须在CheckStatus方法中传递表单的一个实例作为参数。但是因为你想让它应用到所有的表单中,你必须键入"form"这个词。下面我给你答案,

你的全局代码

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);
}

最新更新