【问题标题】:previous entry in textbox gets deleted in windows form文本框中的上一个条目在 Windows 窗体中被删除
【发布时间】:2019-06-12 17:14:12
【问题描述】:

我已经创建了一个登录和注册表单。 当我在第三个文本框中键入文本时,前两个文本框中的文本消失了。

这是为了检查在文本框 2 和 3 中输入的密码是否相同。如果相同,则将其写入文件,否则显示消息框。

private void TextBox3_TextChanged(object sender, EventArgs e)
    {
         if (textBox2.Text == textBox3.Text)
        {
                FileStream register = new FileStream("store.txt", 
                FileMode.Append, FileAccess.Write);
                StreamWriter open = new StreamWriter(register);
                textBox1.Text = Console.ReadLine(); 
                textBox2.Text = Console.ReadLine();
                open.WriteLine(textBox1.Text);
                open.WriteLine(textBox2.Text);
                open.Close();
                register.Close();
        }
        else
                MessageBox.Show("something went wrong");

【问题讨论】:

  • 在将两个文本框的内容写入文件之前,Console.ReadLine() 的目的是什么?
  • 我的意思是,它不会将文本框的内容读入文件吗?
  • @TazmeenAnoosha 你认为 Console.ReadLine() 会做什么,为什么你认为你的想象力是更可靠的参考 than the documentation?你不能通过编造关于方法可能做什么的故事来编写代码。你必须找出他们真正在做什么。
  • Console.Readline() 绝对不会像您认为的那样做,而且您甚至在 WinForms 应用程序中使用 Console.ReadLine 也很奇怪。
  • 这个方法好像我错了,谢谢指出,我再多搜索一下。

标签: c# winforms


【解决方案1】:

您可能想从学习基本的编程概念开始。

在您的原始帖子中的一个 cmets 中,您说 “我的意思是,它不会将文本框的内容读入文件吗?”。

但是您引用的两行代码是:

textBox1.Text = Console.ReadLine(); 
textBox2.Text = Console.ReadLine();

在任何类型的编程中,assignment 的工作方式是将= 符号右侧的任何内容放入其左侧的任何内容中。所以,下面的意思是把5的值放入变量abc

int abc = 5;

并在您的代码中遵循相同的想法:

textBox1.Text = Console.ReadLine(); 

这意味着无论ReadLine() 函数返回什么都将被放入textBox1.Text。在这种情况下,Console.ReadLine() 返回一个空字符串,将其放入文本框文本中,这就是您声称的文本“消失”的原因。

所以要回答你的问题,你应该有这个但删除上面两个Console.ReadLine() 语句。

open.WriteLine(textBox1.Text);
open.WriteLine(textBox2.Text);

但实际上,在此之前,您可能应该先学习基本的编程概念并先掌握这些概念。

【讨论】:

  • 非常感谢,我刚刚开始使用 C#,无法理解 winforms。
【解决方案2】:

使用 Console.Readline() 可以用空文本覆盖这些文本框。

private void TextBox3_TextChanged(object sender, EventArgs e)
    {
        if (textBox2.Text == textBox3.Text)
        {
            FileStream register = new FileStream("store.txt",
            FileMode.Append, FileAccess.Write);
            StreamWriter open = new StreamWriter(register);
            open.WriteLine(textBox1.Text);
            open.WriteLine(textBox2.Text);
            open.Close();
            register.Close();
        }
        else
            MessageBox.Show("something went wrong");
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多