2017-12-17 6 views
0

私は簡単なWindowsフォームアプリケーションを作成しようとしています。私はTextBoxにテキストを書き、私がそれを行うたびに、テキストがリストにプッシュされるので、すべてのテキスト条件があります。そして、それを使用するために "戻る"ボタンがあります。 buttonBack.Clickはうまくいきます...しかし、box.TextChangedはありません。 私は、このイベントは、私はあなたが「戻る」ボタンからテキストを更新したときに、それがスタックにそれを追加しているので、それが動作していないと信じているテキストWindowsフォームTextChanged

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); 
     } 
    } 
} 
+0

あなたはそれが何を意味するのですか? –

+0

box.TextChanged + =(送信者、引数)=> MakeRevision();私はそれが電話したい) –

+0

それはどのように動作しないのですか? –

答えて

1

を変更するたびに呼ばれるようにしたいです戻るボタンが機能していないように見えますが、実際はそうです。テキストの変更をスタックに追加するかどうかを評価するだけで済みます。ここに例があります。

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イベントのテキストボックスに戻った内容を変更しました。

+0

ええ、イベントのイベント... Thx :) –