刷新UserControl显示的事件

时间:2014-06-13 18:51:07

标签: c# events

我有一个UserControl和一个用于在数据库中更新/存储结果的类。我需要在存储数据时自动刷新UserControlResultDislpay。我已经创建了事件,以便在发生更新时触发刷新。我有以下代码:

Class InstrumentTest:

public delegate void UpdateResultDisplay(object sender, EventArgs e);

public event UpdateResultDisplay RefreshDisplay;

protected virtual void OnNewResult(EventArgs e)
    {
        if (RefreshDisplay != null)
            RefreshDisplay(this, e);
    }

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();

           OnNewResult(EventArgs.Empty);

           else
        {
            AddTestToQueue(resultData);
        }

        }

 public static InstrumentTest Instance()
    {
        //If instance is null create a new instance of the InstrumentTest
        if (instrumentTestInstance == null)
        {
            instrumentTestInstance = new InstrumentTest();
        }

        return instrumentTestInstance;
    }

来自UserControl的代码:

public UserControlResultDisplay()
    {
        this.InitializeComponent();
        this.InitializeUIStrings();
        this.InitializePlot();


        EventListener(resultChanged);

    }             

 private InstrumentTest resultChanged = InstrumentTest.Instance();

    public void EventListener(InstrumentTest resultChanged)
    {
        //resultChanged = (InstrumentTest)obj;
        resultChanged.RefreshDisplay += DisplayNewResultData;                      

    }

private void DisplayNewResultData(object sender, EventArgs e)
    {
        RefreshCurrentResult();
    }

0 个答案:

没有答案