【发布时间】:2014-06-09 21:12:58
【问题描述】:
我有一个显示来自数据库的结果数据的应用程序。有时,如果结果带有附加数据,那么我们会附加记录。在UserControl 中,值是“NA”,直到发生这种情况。我在UserControl 类中有一个refreshdisplay() 方法,效果很好,不幸的是,如果我在使用new 后从我的dataHandler 类调用它,UserControl 不会刷新。我猜这是因为我使用了
UserControlResultDisplay resultDisplay = new UserControlResultDisplay();
如何在不实例化新的情况下使用方法并与现有的 UserControl 交互?
这里有一些代码sn-ps:
UserControlResultDisplay resultDisplay = new UserControlResultDisplay();
public void UpdateResultDB(ResultDataJFTOT resultData)
{
AnalysisListCommon myresult = PContext.GetInstance().DbHandlerLocal.StoredResult(
resultData.SampleId,
resultData.TestDate.ToString("yyyy-MM-ddTHH:mm", CultureInfo.InvariantCulture),
resultData.InstrumentSn,
StringRepository.constStringSampleName);
if (myresult != null)
{
Result r = new Result(new Guid(myresult.ResultId));
ResultData rd = r.GetResultData("Rating", FindResultDataMode.byVariableIdentifier);
string xmlTubeRating = resultData.tRating.ToString().Replace("#LT#", "<");
rd.Text = xmlRating;
rd.Store();
rd = r.GetResultData("TestDate", FindResultDataMode.byVariableIdentifier);
rd.Text = resultData.Date.ToString();
rd.Store();
resultDisplay.RefreshDisplay();
}
else
{
AddTestToQueue(resultData);
}
}
【问题讨论】:
-
通过构造函数传入现有引用?这就是你通常的做法......我是否错过了阻止这种情况的东西?
-
我这样做了,但是关键字“new”的使用似乎让我头晕目眩。这是否会打开 UserControl 的新实例,而不是使用打开的实例。调用函数不在窗体中,因此该函数在 UserControl 打开且可见时执行。我有点像菜鸟,所以如果我离基地很远,请耐心等待并详细说明。
-
如果作为参数传入,则不需要
new关键字。你能把代码贴在你这样做的地方吗? -
@BradleyDotNet 那可能是我的问题。原谅我,因为我还是绿色的。但我认为 c# 中的对象不是值,不能传递。我很抱歉问了一些我应该知道的问题,但是......我该怎么做
-
看看我的回答,希望它可以消除你的困惑 :)