在Windows窗体文本框中显示代码结果

时间:2014-07-16 21:01:11

标签: c# winforms

我正在尝试使用Windows窗体Textbox显示代码生成的值。以下是生成值的代码:

我想使用表单设计器文本框显示“console:writeline”(私有System.Windows.Forms.TextBox textBox1;)

public static void TestGetRunSummaryResult()
    {

        // create project
        string requestCreateProjectUri = OpenApiUri + string.Format(CreateProjectUri, "xml");
        HttpWebResponse responseCreateProject =
            (HttpWebResponse)
            _CallPostApi(requestCreateProjectUri, typeof(NewProjectItem), _GetProjectItem("TestGetRunSummaryResultAPI"));
        int newProjectId = DeserializeHttpWebResponse(responseCreateProject);
        projectListToBeDeleted.Add(newProjectId);

        //Create a Base Run
        string requestCreateBaseRunUri = OpenApiUri + string.Format(CreateBaseRunUri, "xml");
        HttpWebResponse responseCreateBaseRun =
            (HttpWebResponse)
            _CallPostApi(requestCreateBaseRunUri, typeof(NewRunItem), _GetNewRunItem(newProjectId));
        int newRunId = DeserializeHttpWebResponse(responseCreateBaseRun);


        string requestGetRunStatusUri = OpenApiUri + string.Format(GetRunStatus, newRunId, 0, "json");

        int percentStatus = 0;

        while (percentStatus < 100)
        {
            HttpWebResponse response = (HttpWebResponse)_CallGetApi(requestGetRunStatusUri);
            Stream responseStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(responseStream);
            string result = reader.ReadToEnd();
            RunStatus runStatus = DataContractJsonDeserialize<RunStatus>(result);
            percentStatus = runStatus.StatusPercentDone;
            MessageBox.Show(String.Format("{0}% - {1}", percentStatus, runStatus.DetailedStatus));
        }

        string requestGetRunSummaryResultsUri = OpenApiUri +
                                             string.Format(GetRunSummaryResultsUri, newRunId, 0, "json");
        HttpWebResponse response2 = (HttpWebResponse)_CallGetApi(requestGetRunSummaryResultsUri);
        Stream responseStream2 = response2.GetResponseStream();
        StreamReader reader2 = new StreamReader(responseStream2);
        string resultSummary = reader2.ReadToEnd();
        RunResultSummary runResultSummary = DataContractJsonDeserialize<RunResultSummary>(resultSummary);

        MessageBox.Show("Building Type: " + runResultSummary.BuildingType);

        //Console.WriteLine("Summary run result for: " + runResultSummary.Runtitle);
        //Console.WriteLine("Location: " + runResultSummary.Location);
        //Console.WriteLine("Building Type: " + runResultSummary.BuildingType);
        //Console.WriteLine("Project Template: " + runResultSummary.ProjectTemplateApplied);
        //Console.WriteLine(String.Format("Floor Area: {0} {1}", runResultSummary.FloorArea.Value, runResultSummary.FloorArea.Units));
        //Console.WriteLine(String.Format("Electriciyt Cost: {0} {1}", runResultSummary.ElectricCost.Value, runResultSummary.ElectricCost.Units));
        //Console.WriteLine(String.Format("Annual Energy Cost: {0} ", runResultSummary.RunEnergyCarbonCostSummary.AnnualEnergyCost));
        //Console.WriteLine(String.Format("Lifecycle Cost: {0} ", runResultSummary.RunEnergyCarbonCostSummary.LifecycleCost));
        //Console.WriteLine(String.Format("Annual CO2 Emissions Electric: {0} {1}", runResultSummary.RunEnergyCarbonCostSummary.AnnualCO2EmissionsElectric.Value, runResultSummary.RunEnergyCarbonCostSummary.AnnualCO2EmissionsElectric.Units));
        //Console.WriteLine(String.Format("Annual CO2 Emissions On site Fuel: {0} {1}", runResultSummary.RunEnergyCarbonCostSummary.AnnualCO2EmissionsOnsiteFuel.Value, runResultSummary.RunEnergyCarbonCostSummary.AnnualCO2EmissionsOnsiteFuel.Units));
        //Console.WriteLine(String.Format("Annual CO2 Emissions Large SUV Equivalent: {0} {1}", runResultSummary.RunEnergyCarbonCostSummary.AnnualCO2EmissionsLargeSUVEquivalent.Value, runResultSummary.RunEnergyCarbonCostSummary.AnnualCO2EmissionsLargeSUVEquivalent.Units));


        //Assert.AreEqual(runResultSummary.Runtitle, "box model");

    }

1 个答案:

答案 0 :(得分:0)

你有几个选择:

1.重构代码,使您的方法不是静态的。这可能不是一个糟糕的选择,因为无论如何静态通常都是构建代码的坏方法。

2.创建一个类似

的静态TextBox
static Textbox myTextBox;

然后在表单加载时将其设置为文本框,并使用它代替Console.WriteLine()

3.在TextBox中作为参数使用

public static void TestGetRunSummaryResult(TextBox y)
{
    t.Text = "whatever";
}

4.使用回调方法

如果您正在使用MultiThreading,那么也不要忘记使用TextBox.Invoke()。 ( - :