2

フォームに表示されるテキストに一種のアニメーションを追加する方法があるのではないかと思いました。

これを考えたときに頭に浮かんだのは、PowerPointのテキストでできることと似ています(つまり、テキストを1つずつ入力するタイプライターのようなアニメーションで、テキストボックス全体を特定の効果で表示するなど)。 )、Windowsフォームを使用して何ができるかを調べています。

現在、フォームアプリケーションに情報を表示するためにテキストボックスを使用していますが、後から考えると、ラベルも同様に機能することがわかります。

編集:結局、私はラベルを使用していたことがわかりました。より適切な説明がないため、内部に「テキストボックス」を含む名前を付けました。

4

2 に答える 2

4
public partial class Form1 : Form
{
    int _charIndex = 0;
    string _text = "Hello World!!";
    public Form1()
    {
        InitializeComponent();
    }

    private void button_TypewriteText_Click(object sender, EventArgs e)
    {
        _charIndex = 0;
        label1.Text = string.Empty;
        Thread t = new Thread(new ThreadStart(this.TypewriteText));
        t.Start();
    }

    private void TypewriteText()
    {
        while (_charIndex < _text.Length)
        {
            Thread.Sleep(500);
            label1.Invoke(new Action(() =>
            {
                label1.Text += _text[_charIndex];
            }));
            _charIndex++;
        }
    }
}
于 2012-09-12T15:10:31.013 に答える
1

個人的には、不必要なアニメーションはユーザーを苛立たせる傾向があるため、これは行いません。私はアニメーションを慎重に使用するだけです - それが本当に理にかなっている場合.

そうは言っても、確かに次のようなことができます:

 string stuff = "This is some text that looks like it is being typed.";
 int pos = 0;
 Timer t;

 public Form1()
 {
     InitializeComponent();
     t = new Timer();
     t.Interval = 500;
     t.Tick += new EventHandler(t_Tick);
 }

 void t_Tick(object sender, EventArgs e)
 {
     if (pos < stuff.Length)
     {
         textBox1.AppendText(stuff.Substring(pos, 1));
         ++pos;
     }
     else
     {
         t.Stop();
     }
 }

 private void button1_Click(object sender, EventArgs e)
 {
     pos = 0;
     textBox1.Clear();
     t.Start();
 }

またはそのようなもの。0.5 秒刻みで、複数行のテキスト ボックスに別の文字が追加されます。誰かができることのほんの一例。

于 2012-09-12T15:06:56.173 に答える