【发布时间】:2016-01-10 11:50:36
【问题描述】:
我花了很长时间才能让它工作,我觉得它是如此简单......
我有 2 个类,form1.cs 和 logic.cs
在 form1 上,我有一个私有变量“输出”,具有公共属性输出,我可以设置值。我还有一个公共方法来设置 textbox1.Text 的内容(保持 textbox1 私有)。
namespace myNamespace
{
public partial class Form1 : Form
{
private string output;
public string Output
{
get { return output; }
set
{
if (!String.IsNullOrEmpty(value))
output += value;
}
}
public void SetTextbox1(string value)
{
textbox1.Text = value;
}
}
}
在逻辑上,我有一些实例试图更改 form1 上的变量以更新 textbox1
namespace myNamespace
{
class logic
{
public void Info(string imagePath, string mountDir)
{
mountDir = "C:\\mount"
try
{
DismImageInfoCollection imageInfo = DismApi.GetImageInfo(mountDir)
form1.Output = imageInfo.ToString();
form1.SetTxtOutput(form1.Output);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
我在尝试的最后 2 行中收到错误消息:
An object reference is required for the non-static field, method, or property 'form1.Output'
如果我将输出、SetTxtOutput() 和输出更改为静态,它会报错,因为 textbox1 也不是静态的。
在不将文本框设置为公共并直接操作的情况下,跨类操作文本框文本值的正确方法是什么?
【问题讨论】:
-
我认为编译器的意思是 form1 被声明为静态的。你能告诉我们form1声明/初始化吗
-
1 - 你在哪里创建 form1 的实例? 2 - 您发布的 form1 类代码不正确 - 它只显示命名空间元素,然后显示类内容
-
你是对的 - 我错过了 Form1 的声明。它是从 VS2015 自动生成的(即视觉设计师使用的类)