首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows窗体TextChanged

Windows窗体TextChanged
EN

Stack Overflow用户
提问于 2017-12-17 13:49:09
回答 1查看 176关注 0票数 0

我正在尝试制作简单的Windows窗体应用程序。我将文本写入TextBox,每次我这样做时,文本都会被推送到列表中,所以我们有了所有的文本条件。所以我们有“后退”按钮来使用它。buttonBack.Click工作得很好...但box.TextChanged并非如此。我希望每次更改文本时都调用此事件

代码语言:javascript
复制
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Drawing;

namespace TextBox
{
    class Revision
    {
        public string Text { get; set; }
        public int CoursorPosition { get; set; }
    }

    class MyForm : Form
    {
        static RichTextBox box = new RichTextBox();
        static List<Revision> revisions = new List<Revision>();

        static void MakeRevision()
        {
            revisions.Add(new Revision
            {
                Text = box.Text,
                CoursorPosition = box.SelectionStart
            });
        }

        public MyForm()
        {

            var buttonBack = new Button()
            {
                Location = new Point(0, 0),
                Size = new Size(ClientSize.Width, 30),
                Text = "Back"
            };

            box.Size = new Size(ClientSize.Width, 100);
            box.Multiline = true;
            box.Location = new Point(0, buttonBack.Bottom);
            box.TextChanged += (sender, args) => MakeRevision();
            box.MouseDown += (sender, args) => MakeRevision();

            Controls.Add(buttonBack);
            Controls.Add(box);

            buttonBack.Click += (sender, args) =>
            {
                box.Text = revisions.Last().ToString();
                revisions.RemoveAt(revisions.IndexOf(revisions.Last()));
            };
        }

        public static void Main()
        {
            var form = new MyForm();
            Application.Run(form);
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-17 15:31:41

我相信它不起作用,因为当你从“后退”按钮更新文本时,它会将它添加到堆栈中,这样看起来后退按钮就不起作用了,但实际上它是起作用的。您只需要评估文本更改是否应该添加到堆栈中。下面是一个例子。

代码语言:javascript
复制
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Drawing;

namespace TextBox
{
    class Revision
    {
        public string Text { get; set; }
        public int CoursorPosition { get; set; }
    }

    class MyForm : Form
    {
        static RichTextBox box = new RichTextBox();
        static List<Revision> revisions = new List<Revision>();
        static bool loading = false;

        static void MakeRevision()
        {
            if (loading)
                return;

            revisions.Add(new Revision
            {
                Text = box.Text,
                CoursorPosition = box.SelectionStart
            });
        }

        public MyForm()
        {

            var buttonBack = new Button()
            {
                Location = new Point(0, 0),
                Size = new Size(ClientSize.Width, 30),
                Text = "Back"
            };

            box.Size = new Size(ClientSize.Width, 100);
            box.Multiline = true;
            box.Location = new Point(0, buttonBack.Bottom);
            box.TextChanged += (sender, args) => MakeRevision();
            box.MouseDown += (sender, args) => MakeRevision();

            Controls.Add(buttonBack);
            Controls.Add(box);

            buttonBack.Click += (sender, args) =>
            {
                if (revisions.Count > 0)
                {
                    loading = true;
                    box.Text = revisions.Last().Text;
                    box.SelectionStart = revisions.Last().CoursorPosition;
                    box.Focus();
                    revisions.RemoveAt(revisions.IndexOf(revisions.Last()));
                    loading = false;
                }
            };
        }

        public static void Main()
        {
            var form = new MyForm();
            Application.Run(form);
        }
    }
}

我还更改了发送回buttonBack.Click事件中的文本框的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47852561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档