Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C动态创建文本框名称_C#_Textbox - Fatal编程技术网

C# C动态创建文本框名称

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" +

我正在尝试动态创建一个文本框名称,因为我有很多文本框名称,这样可以更容易地写入它们,而不使用循环。我使用的是visualstdio2010,.net2.0。下面的代码是我的示例,但我无法让它工作

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