【问题标题】:EndOfStream cannot be used like a methodEndOfStream 不能像方法一样使用
【发布时间】:2016-08-03 20:35:47
【问题描述】:

我必须为我的班级创建一个程序,我几乎完成了。我将此代码链接到一个名为 PersonEntry 的类。我试图找出为什么我的 EndOfStream 不起作用。它说它不能用作方法

namespace Jason_Todd___IS_204___HW11CH9_7
{
    public partial class Form1 : Form
    {
        string selectedName = "";
        List<PersonEntry> nameList = new List<PersonEntry>();

    public Form1()
        {
            InitializeComponent();
        }

        // gotta load the names from this list. Because, you know, I need to get a grade.
    private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                StreamReader inputFile;
                inputFile = File.OpenText("Personlist.txt");

                string inRecord;

                while (!inputFile.EndOfStream())  // This is where my error occurs.
                {
                    inRecord = inputFile.ReadLine();
                    string[] tokens = inRecord.Split(',');

                    PersonEntry friendObj = new PersonEntry(tokens[0],tokens[1],tokens[2]);

                    listBox1.Items.Add(friendObj.Name);


                    nameList.Add(friendObj);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                MessageBox.Show("Exception in try/catch. ");
            }
        }

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            selectedName = listBox1.SelectedItem.ToString();
            PersonInfoForm myPerInfoForm = new PersonInfoForm();
            Label label1 = new Label();
            label1.Size = new Size(270, 75);
            label1.Location = new Point(10, 10);

            foreach (PersonEntry PersonEntry in nameList)
            {
                if (PersonEntry.Name == selectedName)
                {
                    label1.Text += "Name: " + PersonEntry.Name + "\n" +
                                   "Email: " + PersonEntry.Email + "\n" +
                                   "Phone number: " + PersonEntry.PhoneNum;
                }
            }

            myPerInfoForm.Controls.Add(label1);
            myPerInfoForm.ShowDialog();
        }

        private void exitButton_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

【问题讨论】:

  • EndOfStream 是一个属性,而不是一个方法。只需删除 () 即可编译。

标签: c# list class methods


【解决方案1】:

.EndOfStreamStreamReader 类的只读属性。得到一个 指示当前流位置是否在末尾的值 流的。

所以() 不需要访问属性的值。该语句将如下所示:

 while (!inputFile.EndOfStream)  // This line will not show error now
 {
     // your stuff here       
 }

【讨论】:

  • 谢谢!我还有一个问题。我的 Personlist.txt 文件中的人名没有显示在我的列表框中。你知道这背后的原因是什么吗?我的文件保存在正确的区域。
  • 您是否遇到任何错误或异常?希望 PersonEntry 类具有接受 3 个参数的构造函数。是否可以附加PersonEntry class tot eh question
【解决方案2】:

抱歉,我无法回复其他人的 cmets,所以我在这里回答您的 ListBox 问题。

ListBox 保存对象而不是字符串。当您将项目添加到列表框时,请执行此操作listBox1.Items.Add(friendObj);

那么你有两个选择。

1) 设置listBox1.DisplayMember = "Name"

2) 在您的 Friend 类中覆盖 ToString() 方法并使其返回这样的名称

public override ToString()
{
    return this.Name;
}

默认情况下,ListBox 对您添加到其中的对象调用 ToString() 以确定要在 UI 中显示的文本,除非您为 ListBox 显式设置 DisplayMember 属性。

【讨论】:

    猜你喜欢
    • 2013-08-10
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 2016-05-01
    • 2016-04-11
    • 2018-05-31
    • 1970-01-01
    相关资源
    最近更新 更多