无法将全局 class 中的 "Visible" 方法应用于 C# 中的多个 winform
Cannot apply "Visible" method from a global class to multiple winforms in C#
我正在处理一些事情,需要你的帮助。我是 c# 的新手,我正在创建一个包含多个表单的 winforms 应用程序。有一段代码需要出现在所有表单上,但由于我不想将它复制并粘贴到每个表单中,我创建了一个 class 来存储该代码,然后我只想调用它class.
我需要重复的全局代码如下,
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();
}
我的问题是我无法将“可见”方法从全局 class 转移到其他 classes。我想这是因为我的全局 class 没有附加到 winform。它只是一段在全球范围内使用的代码。我做错了什么???
试试这个
public static void CheckStatus(System.Windows.Form currentForm)
{
.....
currentForm.Visible = false;
`````
}
并调用它
.....
Login_User.CheckStatus(this);
.....
出现问题是因为关键字“this”作为 属性 而不是 class 应用于表单。在您的情况下,您必须在 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("Συνεχίστε την περιήγηση σας!!!");
}
}
}
}
然后您必须将您的全局代码应用到您想要的表单,如下所示。
请注意,您必须将整个 class 设置为静态才能使其正常工作。
将全局代码应用于表单
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Login_User.CheckStatus(this);
}
我正在处理一些事情,需要你的帮助。我是 c# 的新手,我正在创建一个包含多个表单的 winforms 应用程序。有一段代码需要出现在所有表单上,但由于我不想将它复制并粘贴到每个表单中,我创建了一个 class 来存储该代码,然后我只想调用它class.
我需要重复的全局代码如下,
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();
}
我的问题是我无法将“可见”方法从全局 class 转移到其他 classes。我想这是因为我的全局 class 没有附加到 winform。它只是一段在全球范围内使用的代码。我做错了什么???
试试这个
public static void CheckStatus(System.Windows.Form currentForm)
{
.....
currentForm.Visible = false;
`````
}
并调用它
.....
Login_User.CheckStatus(this);
.....
出现问题是因为关键字“this”作为 属性 而不是 class 应用于表单。在您的情况下,您必须在 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("Συνεχίστε την περιήγηση σας!!!");
}
}
}
}
然后您必须将您的全局代码应用到您想要的表单,如下所示。 请注意,您必须将整个 class 设置为静态才能使其正常工作。
将全局代码应用于表单
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Login_User.CheckStatus(this);
}