2012-02-14 105 views
0

我有一个最大长度为15个字符的标签,以及最大长度基本为无穷大的多行文本框。我希望当我在文本框中输入文本以将其文本更新为标签时,但是当标签达到它时,将删除第一个字符并将最后一个字符替换为文本框中的下一个字母。所以基本上它看起来像一个字幕留下的效果,但在我输入时实时更新。我将如何做到这一点?如何从文本框中更改标签文本

这是我想出了

private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     String text = textBox1.Text.Replace("\r\n", "|"); 

     int startIndex = ((text.Length - 1)/15) * 15; 

     label1.Text = text.Substring(Math.Max(0, startIndex)); 
    } 

但它删除文本,达到了15个字符后再次写我希望它流,如果它被滚动到左边的文字。

+0

你尝试过什么?这听起来像是一个基本的if和subquery操作? – 2012-02-14 05:41:02

+1

你必须编写一些代码,这里没有内置属性。尝试编写该代码来更新您的问题。 – 2012-02-14 05:42:05

+0

我已经尝试了子串和stringbuilder我不知道我应该这样做。 – 2012-02-14 05:43:17

回答

0
private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    label1.Text = textBox1.Text.Length <= 15 
         ? textBox1.Text 
         : new string(textBox1.Text.Skip(textBox1.Text.Length - 15).ToArray()); 
} 

寿,如果你只是想解决你已经得到了代码替换此

int startIndex = ((text.Length - 1)/15) * 15; 

与此

int startIndex = text.Length - 15; 
+0

tyvm伙计,这是完美的 – 2012-02-14 13:45:52