如果我有一个32行高的TextBox。 我怎么能将文本框中的当前文本“Bump”向下1然后在第一行上添加新文本。
这是我试过的它不起作用,显然不是干净/有效的做事方式
String[] chat = new String[32];
if (client.Controls[0].InvokeRequired)
{
SetTextCallback d = new SetTextCallback(setText);
client.Invoke(d, new object[] { text });
}
else
{
chat[0] = chat[1].ToString();
chat[1] = chat[2].ToString();
chat[2] = chat[3].ToString();
chat[3] = chat[4].ToString();
chat[4] = chat[5].ToString();
chat[5] = chat[6].ToString();
chat[6] = chat[7].ToString();
chat[7] = chat[8].ToString();
chat[8] = chat[9].ToString();
chat[9] = chat[10].ToString();
chat[10] = chat[11].ToString();
chat[11] = chat[12].ToString();
chat[12] = chat[13].ToString();
chat[13] = chat[14].ToString();
chat[14] = chat[15].ToString();
chat[15] = chat[16].ToString();
chat[16] = chat[17].ToString();
chat[17] = chat[18].ToString();
chat[18] = chat[19].ToString();
chat[19] = chat[20].ToString();
chat[20] = chat[21].ToString();
chat[21] = chat[22].ToString();
chat[22] = chat[23].ToString();
chat[23] = chat[24].ToString();
chat[24] = chat[25].ToString();
chat[25] = chat[26].ToString();
chat[26] = chat[27].ToString();
chat[27] = chat[28].ToString();
chat[28] = chat[29].ToString();
chat[29] = chat[30].ToString();
chat[30] = chat[31].ToString();
chat[31] = text + "\r\n";
for (int i = 0; i < chat.Length; i++)
{
if (chat[i] != null)
{
client.Controls[0].Text += text + "\r\n";
}
}
}
答案 0 :(得分:0)
我对一个问题有点困惑。 a)添加循环,即
for (int i= 0; i<31; i++)
chat[i] = chat[i+1].ToString();
chat[31] = text + "\r\n";
b)如果您更改了变量,则需要更改文本框数据,除非它是绑定的
或在第一行发布你想要的新文字。至少我没弄明白。
答案 1 :(得分:0)
这看起来效率不高。申请的目的是什么?这是一个“聊天”应用程序吗?
有没有理由在数组中保留32个字符串?
为什么不简单地将新字符串附加到文本框中包含的文本的顶部,例如
client.Controls[0].Text = [Some Text] + Environment.Newline + client.Controls[0].Text;
答案 2 :(得分:0)
不完全是我想要的但是有效。
public void setText(string text)
{
if (ChatClient.ChatClient.client.Controls[0].InvokeRequired)
{
SetTextCallback d = new SetTextCallback(setText);
client.Invoke(d, new object[] { text });
}
else
{
client.Controls[0].Text = null;
for (int i = 0; i < chat.Length - 1; i++)
{
chat[i] = chat[i + 1];
}
chat[30] = text;
for (int i = 0; i < chat.Length; i++)
{
client.Controls[0].Text += chat[i] + "\r\n";
}
}