gpt4 book ai didi

c# - 我怎样才能使我的表单控件变量可以被我的表单类以外的类访问?

转载 作者:太空宇宙 更新时间:2023-11-03 19:57:14 25 4
gpt4 key购买 nike

例如,在创建一个新的 Windows 窗体项目后,我有一个名为 Form1.cs 的类,从该窗体我可以简单地开始输入窗体控件的名称,它将自动填充窗体控件变量名称,我能够在类里面使用它们。然而,我还有其他类也需要能够访问这些表单控制变量,但它们不可访问。

最佳答案

如果要在另一个程序集中使用它们,则将它们公开,如果要在同一项目中使用,则将它们公开。将它们设为静态意味着您不必将 Form1 传递给其他类。

示例...假设您的 Form1 有一个字符串,其中包含您在标题栏中显示的文本。使其成为内部静态,如下所示:

internal static readonly string MsgBox_Title = " Best Application Evar!";

让您可以像这样从其他类访问它:

Form1.MsgBox_Title

它不必是只读的;这只是我从旧应用程序中提取的示例...

如果您不需要静态变量,则必须传入 Form1 的实例。

public class SomeClass
{
private Form1 m_Form1;

public SomeClass(Form1 form1)
{
m_Form1 = form1;
}

private void someMethod()
{
string localValue = m_Form1.SomeMemberStringVariable;
}
}

这是一个非常人为的例子,但希望你明白了。

如果要从 Form1 实例化的类中调用 Refresh 方法,可以使用子类中的事件来通知 Form1。

例子:

这个 Form1 有一个按钮,我用它来显示辅助表单。

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnShowPopup_Click(object sender, EventArgs e)
{
PopupForm f = new PopupForm();
f.CallRefreshHandler += PopupForm_CallRefreshHandler;

f.ShowDialog();
}

private void PopupForm_CallRefreshHandler(object sender, EventArgs e)
{
Refresh();
}
}

辅助表单“PopupForm”有一个按钮,我用它来引发 Form1 订阅的事件,并让 Form1 知道调用 Refresh。

public partial class PopupForm : Form
{
public event EventHandler CallRefreshHandler;

public PopupForm()
{
InitializeComponent();
}

private void btnRaiseEvent_Click(object sender, EventArgs e)
{
EventHandler handler = CallRefreshHandler;

if (handler != null)
{
handler(this, EventArgs.Empty);
}
}
}

希望这对您有所帮助。

关于c# - 我怎样才能使我的表单控件变量可以被我的表单类以外的类访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32262920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com