如何在 C# 中使用实例引用?
Posted
技术标签:
【中文标题】如何在 C# 中使用实例引用?【英文标题】:How to use an instance reference in c#? 【发布时间】:2021-11-11 01:34:56 【问题描述】:我正在开发一个用 C# 编写的 Winforms 应用程序,该应用程序在匹配静态项时遇到问题。
这是我的代码
InitializeComponent();
string pnumber = Calculate.Peoplenumber.Text;
int peoplenumber = int.Parse(Calculate.Peoplenumber.Text);
int daynumber = int.Parse(Calculate.Daynumber.Text);
int Totalcost = int.Parse(Calculate.totalcost.Text);
int TripBasicCost = Totalcost / daynumber;
int TripDayCost = TripBasicCost / peoplenumber;
引用所有 Calculate.FormName
对象会产生此错误:
非静态字段、方法或属性需要对象引用。
观察form1.cs中的链接,出现对象链接,这里是一个连接的代码:
public void Peoplenumber_TextChanged(object sender, EventArgs e)
但将其更改为 public static void 会产生此错误:
'Calculate.Peoplenumber_TextChanged(object, EventArgs)' 不能通过实例引用访问;改为使用类型名称来限定它
我想知道如何在这里适当地使用实例引用?
【问题讨论】:
什么静态项?您正在尝试获取某些 TextBox 的文本内容。在哪里?在包含这些控件的表单之外的表单中?Calculate
是什么?是您称为form1
的表格吗? --the link
和对象链接是什么? Peoplenumber_TextChanged
是一个事件处理程序。 -- 如果您需要将一些数据从一个表单传递到另一个表单,请在类对象中收集您需要的数据,并将此引用传递给例如需要它的表单的构造函数,从创建其实例的表单(可能最简单的例子)。
计算是我使用的形式,是的。我需要将 peoplenumber_textchanged 中的数据作为静态字符串传递,谢谢。
我们无法轻易理解您的问题,因为它包含很多错误/误解。最好只告诉我们您拥有什么以及您想做什么。 例如:“我有两个表单,CalculateForm 和 TotalForm。CalculateForm 有一个文本框 Operator1TextBox。TotalForm 显示 CalculateForm,用户在其中输入一个数字,然后单击 OK 隐藏表单。然后 TotalForm 中的代码需要检索键入的值并将其添加到总数中。这是我到目前为止编写的代码“-如果您这样陈述您的问题,我们可以用它做点什么
“但将其更改为 public static void 会产生此错误” - 感觉这应该是静态的不太可能 - 事实上,这种情况下的静态项目数应该接近零;但我们理解的唯一方法是查看代码
【参考方案1】:
为什么你不能创建一个模型来收集你在评论中提到的。 调用form2但调用this时在构造函数中注入模型 Peoplenumber_TextChanged 可能无法正常工作。
public class MyClass
public int Peoplenumber get; set;
public int Daynumber get; set;
public int totalcost get; set;
public Form2(MyClass model)
InitializeComponent();
int peoplenumber = model.Peoplenumber;
int daynumber = model.Daynumber;
int Totalcost = model.totalcost;
int TripBasicCost = Totalcost / daynumber;
int TripDayCost = TripBasicCost / peoplenumber;
public Calculate()
InitializeComponent();
//your other code
//Form2 calling event
var model = new MyClass
Peoplenumber = int.Parse(Peoplenumber.Text),
Daynumber = int.Parse(Daynumber.Text),
totalcost = int.Parse(totalcost.Text)
;
//you can validate values in the textboxes
new Form2(model).ShowDialog();
【讨论】:
试试看,谢谢。以上是关于如何在 C# 中使用实例引用?的主要内容,如果未能解决你的问题,请参考以下文章