如何键入标签
本文关键字:标签 何键入 | 更新日期: 2023-09-27 18:24:14
我正在尝试一个多行文本框,当你输入它时,它会流式传输到标签,但标签的最大长度必须为15,所以一旦它在文本框中达到15个字符,它就应该开始覆盖标签,因为它达到了的最大长度
感谢任何能够帮助的人
在文本框中添加onchange事件:
if (textBox1.Text.Length<=15)
{
label1.Caption=textBox1.Text;
}
例如
我不确定您想要实现什么样的覆盖。
至少有三种方法可以使用:
-
始终显示文本框中的最后15个字符,如Olivier的回答中所述
-
清除标签的文本,每插入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个字符时,您也可以逐字符覆盖,但是,我认为这不是您想要实现的,因为这会导致文本框混乱;),然而,它可以作为一种视觉效果:)。如果您想要此代码片段,请告诉我:)。更新下面是第三种重写方法的代码:
String lastText = ""; private void textBox1_TextChanged(object sender, EventArgs e) { String textBoxText = textBox1.Text.Replace("'r'n", "|"); if (textBoxText.Length > lastText.Length) { int charIndex = (textBoxText.Length - 1) % 15; if (charIndex >= 0) { label1.Text = label1.Text.Insert(charIndex, textBoxText.Substring(textBoxText.Length - 1)); if (charIndex < textBoxText.Length - 1) { label1.Text = label1.Text.Remove(charIndex + 1, 1); } } } else { int charIndex = textBoxText.Length % 15; if (textBoxText.Length >= 15) { label1.Text = label1.Text.Insert(charIndex, textBoxText[textBoxText.Length - 15].ToString()); if (charIndex < textBoxText.Length - 1) { label1.Text = label1.Text.Remove(charIndex + 1, 1); } } else { label1.Text = label1.Text.Remove(label1.Text.Length - 1, 1); } } lastText = textBoxText; }
向TextBox
的TextChanged
事件添加一个处理程序,该处理程序根据文本设置Label
的内容。例如(未经测试,可能有你的概念错误或在某个地方偏离了一个)
int startIndex = Math.Max(0, myTextBox.Text.Length - 15);
int endIndex = Math.Min(myTextBox.Text.Length - 1, startIndex);
myLabel.Text = myTextBox.Text.Substring(startIndex, endIndex - startIndex);
此外,尽管它不会改变您的问题/答案,但您可能希望使用TextBlock
而不是Label
。它允许诸如换行之类的操作。请在此处查看一些差异:http://joshsmithonwpf.wordpress.com/2007/07/04/differences-between-label-and-textblock/(在WPF中,无论你在做什么,都应该类似)
我的解决方案总是显示标签中的最后15个字符
private void textBox1_TextChanged(object sender, EventArgs e)
{
string s = textBox1.Text.Replace("'r'n", "|");
int length = s.Length;
if (length > 15) {
label1.Text = s.Substring(length - 15);
} else {
label1.Text = s;
}
}
我还将换行符替换为|
。由于您的文本框处于多行模式,因此在按下<Enter>
时会输入换行符。