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