通过单击C#中的按钮返回更新的列表

我有一个简单的窗体,带有一个面板,其中包含一个带有四个CheckButtons作为答案的问题。 用户将浏览表格并为每个问题选择答案。 他们点击按钮接受答案后(代码下方的“ buttonNewAnswer_Click”) 答案将合并到名为“答案”的列表中,然后将其写入“结果”并设置其格式,以便可以将一行写入.csv文件。 涵盖所有问题后,用户将单击“ buttonExit_Click”按钮 并将“结果”写入.csv并退出应用程序。 不幸的是,我无法从“ buttonNewAnswer_Click”到“ buttonExit_Click”获得“结果”列表。 谢谢您的帮助/建议。

using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SIMPLE_FORM
{
    public partial class Form1 : Form
    {
        //public List<String> results = new List<String>();
    string myCsvFileTest = @"myFile.csv"


    // Button to update the answers list
        private void buttonNewAnswer_Click(object sender,EventArgs e)
        {

    // Algorithm to update the "answers" list

            var results = new StringBuilder();
            foreach (var i in answers)
            {
                results.AppendFormat("{0},",i.ToString());
            }
        }

    // Button to write the results to a .csv and then close the application
        private void buttonExit_Click(object sender,EventArgs e)
        {
            if (MessageBox.Show("Press \"Yes\" to confirm closing the Application"," ",MessageBoxButtons.Yesno) == DialogResult.Yes)
            {
                using (StreamWriter writer = new StreamWriter(myCsvFileTest,true,Encoding.UTF8))
                {
                    writer.WriteLine(results);  
                }
                System.Windows.Forms.Application.Exit();
            }
            else
            {
                this.activate();
            }
        }   

我正在尝试从“ buttonNewAnswer_Click”中获取“结果”列表,并将其用于代码中的其他位置,例如“ buttonExit_Click”,以写入.csv

xaut2009 回答:通过单击C#中的按钮返回更新的列表

您需要将results对象声明为Form1类成员。

现在,您正在buttonNewAnswer_Click函数中将其定义为局部变量-因此一旦函数结束,它将被销毁。

基于问题代码的简化代码:

public partial class Form1 : Form
{
    // declare and allocate
    StringBuilder results = new StringBuilder();

    private void buttonNewAnswer_Click(object sender,EventArgs e)
    {         
        // fill the results object
        foreach (var i in answers)
        {
            results.AppendFormat("{0},",i.ToString());
        }
    }

    private void buttonExit_Click(object sender,EventArgs e)
    {
        // you can use the result here.
        // results
    }   
}
本文链接:https://www.f2er.com/3121657.html

大家都在问