C# C动态创建文本框名称
我正在尝试动态创建一个文本框名称,因为我有很多文本框名称,这样可以更容易地写入它们,而不使用循环。我使用的是visualstdio2010,.net2.0。下面的代码是我的示例,但我无法让它工作C# C动态创建文本框名称,c#,textbox,C#,Textbox,我正在尝试动态创建一个文本框名称,因为我有很多文本框名称,这样可以更容易地写入它们,而不使用循环。我使用的是visualstdio2010,.net2.0。下面的代码是我的示例,但我无法让它工作 private delegate void NameCallBack(string varText, int b); public void UpdateTextBox(string input, int t) { //TextBox tb = FindControl ("textBox" +
private delegate void NameCallBack(string varText, int b);
public void UpdateTextBox(string input, int t)
{
//TextBox tb = FindControl ("textBox" + t.ToString()) as TextBox;
TextBox tb = this.Controls["textBox" + t.ToString()] as TextBox;
if (InvokeRequired)
{
tb.BeginInvoke(new NameCallBack(UpdateTextBox), new object[] { input, t });
}
else
{
tb.Text = tb.Text + Environment.NewLine + input;
}
}
我已经看过这里的一些例子和其他网络资源,但我就是不明白。有人能指出什么可能是愚蠢的错误吗?非常感谢:
很抱歉,我得到的错误是,它没有更新文本框,这不是一个真正的错误。如果我使用注释掉的代码,那么它找不到FindControl方法。我已经看过了这个.controls,但是我很困惑,我已经尝试了很多年了,我想我需要休息一下:我将您的代码复制到了一个WinForms示例项目中,它工作正常 您可能已经选中了此选项,但值得一提的是,您希望文本框是多行的,并且在添加实际文本之前添加了换行符,因此第一行是空的。 如果文本框的高度允许它一次只显示一行,则带有文本的行可能不可见,因此看起来好像没有更新 无论如何,我对您的代码做了一些小的修改,以简化代码,并且在第一次输入之前不输入新行:
private delegate void NameCallBack(string varText, int b);
public void UpdateTextBox(string input, int t)
{
TextBox tb = this.Controls[String.Format("textBox{0}", t)] as TextBox;
if (InvokeRequired)
{
tb.BeginInvoke(new NameCallBack(UpdateTextBox), input, t);
}
else
{
if (!String.IsNullOrEmpty(tb.Text))
{
tb.Text += Environment.NewLine;
}
tb.Text += input;
}
}
它似乎起作用了
更新
如果这仍然不起作用,那么问题似乎在其他地方。
请再次选中要显示文本的文本框命名为textBox,其中是相应的数字
另一件事是确保没有抛出任何异常,它们可能会在代码的其他地方被捕获。要中断所有异常,请转到调试,异常。。。在出现的窗口中,选中与公共语言运行时异常相关的抛出列中的复选框。什么不起作用?你得到了什么样的错误?看看控件。查找方法。很抱歉,我得到的错误是它没有更新文本框,这不是一个真正的错误。如果我使用注释掉的代码,那么它找不到FindControl方法。我已经看过了这个.controls,但是我很困惑,我已经尝试了很多年了,我想我需要休息一下:FindControl是一个System.Web.UI方法。您是在使用winforms还是在开发网页?嘿,谢谢!唯一的问题是我的文本框大约是600 x 600,多行但不显示任何内容,但是如果我注释掉文本框tb=。。。并将tb分配给它在屏幕上正确显示的textBox2,有什么想法吗?如何调用UpdateTextBox方法?确保使用类似UpdateTextBoxmy text,2;的内容;。我称之为使用。。。Program.MainLogWindow.UpdateTextBoxconvertedHex,文本框;如果可能的话,附加一个调试器并在那里放置一个断点,只需确保convertedHex不是空的,并且textBox euqals是一个适当的数字。如果没有帮助,请粘贴一段代码,显示值的来源,因此我们将尝试解决此问题:。嘿,很抱歉回复太慢,我感谢您的帮助!将ASCII发送到但输出到文本框的代码是这个公共void hextoascisitring hex,int textBox{StringBuilder sb=new StringBuilder;对于int i=0;i