天道酬勤,学无止境

how to define an array of textboxes in c#?

Hi when I create textboxes on Windows Application Form I cannot name it as box[0], box[1] and so on. The purpose why I want to do like this is because I want to use them in a loop.

评论

How about making a list of them after you create them? In your form initialization function, you can do something like:

List<TextBox> myTextboxList = new List<TextBox>();
myTextBoxList.Add(TextBox1);
myTextBoxList.Add(TextBox2);
mytextBoxList.Add(TextBox3);

Now you can itterate through with your "myTextboxList" with something like below:

Foreach (TextBox singleItem in myTextboxList) {
    // Do something to your textboxes here, for example:
    singleItem.Text = "Type in Entry Here";
}

You can create textboxes on runtime and just put them in an array...

If you want to do it in design time, you will have to do some control filtering logic on the whole this.Controls array in order to access only the wanted textboxes. Consider if (currControl is TextBox) if all textboxes in the form are ones you want in the array.

Another option for design time, is putting all wanted textboxes in a panel which will be their parent, and then iterating over the panel's children (controls) and cast them to TextBox.

A runtime solution would be something like:

var arr = new TextBox[10];

for (var i = 0; i < 10; i++)
{
    var tbox = new TextBox();

    // tbox.Text = i.ToString();

    // Other properties sets for tbox

    this.Controls.Add(tbox);
    arr[i] = tbox;
}

I wouldn't use an array for this, personally. I would use some form of generic collection, like List.

    List<TextBox> textBoxList = new List<TextBox>();

    //Example insert method
    public void InsertTextBox(TextBox tb)
    {
        textBoxList.Add(tb);
    }

    //Example contains method
    public bool CheckIfTextBoxExists(TextBox tb)
    {
        if (textBoxList.Contains(tb))
            return true;
        else
            return false;
    }

You don't necessarily have to use the Contains method, you could also use Any(), or maybe even find another way- all depends on what you're doing. I just think using a generic collection gives you more flexibility than a simple array in this case.

for C# just use this to create an array of text boxes

public Text [] "YourName" = new Text ["how long you want the array"];

then add the text boxes to the array individually.

TextBox Array using C#

 // Declaring array of TextBox
private System.Windows.Forms.TextBox[] txtArray;

private void AddControls(int cNumber)
{

            // assign number of controls

            txtArray = new System.Windows.Forms.TextBox[cNumber + 1]; 

            for (int i = 0; i < cNumber + 1; i++)

            {

                        // Initialize one variable

                        txtArray[i] = new System.Windows.Forms.TextBox();

            }
}

TextBox[] t = new TextBox[10];
for(int i=0;i<required;i++)
{ 
   t[i]=new TextBox();
   this.Controls.Add(t[]);
}

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何创建一个不重复的随机数?(How to create a non-repeating random number?)
    问题 我正在尝试为老人家创建宾果游戏。 我能够使用用于扫描数组的随机数生成器制作一个,但问题是搜索数组需要很长时间(2 分钟)并确保没有重复。 我做了一些研究,发现在 c 中称为伪随机的东西在创建时不会重复数字。 但是代码看起来非常复杂,所以我不喜欢接受我不完全理解的东西。 这给我带来了一个问题,有没有一种简单的方法可以创建一个非重复的随机数生成器,或者有一个很好的解释可以解释一个? 回答1 很久以前,我用 C 编程语言编写了这个非常简单的程序,它生成 0 到 20 之间的 10 个随机数,不重复任何数字。 #include <stdio.h> #include <stdlib.h> #include <time.h> #define MAX 10 //Number to be generated. #define rangeMAX 20 //Upper limit of range. #define rangeMIN 0 //Lower limit of range. int main() { int get, c, i, arr[MAX], chk, x; c = i = 0; srand(time(0)); // this will ensure that every time, program will generate different set of numbers
  • VB6 控件数组最简单的 .NET 等效项是什么?(What's the simplest .NET equivalent of a VB6 control array?)
    问题 也许我只是对 .NET 还不够了解,但我还没有看到一种令人满意的方法来在 .NET 中轻松实现这个简单的 VB6 代码(假设这个代码在一个表单上,在数组 Command1() 和 N数组 Text1()) 中的文本框: Private Sub Command1_Click(Index As Integer) Text1(Index).Text = Timer End Sub 我知道这不是很有用的代码,但它展示了在 VB6 中可以轻松使用控件数组。 C# 或 VB.NET 中最简单的等价物是什么? 回答1 制作一个通用的文本框列表: var textBoxes = new List<TextBox>(); // Create 10 textboxes in the collection for (int i = 0; i < 10; i++) { var textBox = new TextBox(); textBox.Text = "Textbox " + i; textBoxes.Add(textBox); } // Loop through and set new values on textboxes in collection for (int i = 0; i < textBoxes.Count; i++) { textBoxes[i].Text = "New
  • 制作索引控制数组?(Making an indexed control array?)
    问题 C#是否已索引控制数组? 我想举一个带有5个按钮的“按钮数组”,这些按钮仅使用一个事件处理程序来处理所有这5个控件的索引(就像VB6一样)。 否则,我必须为这5个按钮中的每个按钮编写一个额外的事件处理程序。 如果我有100个按钮,则需要100个事件处理程序? 我的意思是这样的: TextBox1[i].Text="Example"; 对于我来说,使用控制数组可以使编码工作变得更加容易。 现在我知道,C#至少在用户控件上没有可见的数组功能,并且在用户控件上没有“ index”属性。 所以我想C#没有控制数组,或者我必须以已知名称调用每个元素。 我不必编写for循环中的100个TextBoxes 100个递增值,而是要编写: TextBox1.Text = Value1; TextBox2.Text = Value2; ... ... TextBox100.Text = Value100; 还有更多的工作和所有这100个事件处理程序,每个处理程序额外需要一个额外的TextBox。 回答1 正如我在对HatSoft解决方案的评论中提到的那样,C#Winforms不允许您创建控件数组,就像旧的VB6允许我们使用的那样。 我认为我们可以找到的最接近的是HatSoft和Bert Evans在其帖子中显示的内容。 我希望可以满足您要求的一件事是事件处理程序,您将获得一个公共事件处理程序
  • 如何在 C# 中循环名称(How To loop the names in C#)
    问题 我有 10 个文本框,即 TB1、TB2、TB3、TB4 等等......到 TB10 我想将它们存储到名为 toBeStored 的单个字符串值中。 现在我正在做手动方式 String toBeStored=null; tobeStored=TB1.text.toString(); tobeStored+=TB2.text.toString(); 等等.. 我想创建一个 for 循环并添加它们 像这样的东西.. for(int i=1;i<11;i++) { toBeStored+=TB+i+.text.ToString()+" "; } 我知道那是错的..有什么可以使它正确的吗? 回答1 不。因为您将文本框定义为变量,所以根本没有定义枚举器。 您可以定义自己的枚举器。 在最简单的情况下,就像 TextBox boxes [] = new TextBox [] { TB1, TB2, TB3....} foreach (TextBox box in boxes) { } 回答2 虽然我认为前提可能有缺陷,但您可以通过 for (int i = 1; i <= 10 ; i++) { TextBox textbox = (TextBox)Page.FindControls( "TB" + i.ToString); toBeStored += textbox.Text; }
  • 使用数据绑定处理样式(Handling styling with data binding)
    问题 重写 我有一个接收文件的应用程序。 该文件有大量可编辑内容。 此内容有多种可能的类型(即布尔复选框、文本框等)。 问题是,这些值可以是单独的,也可以是一组(最多 8 个),因此它们以数组的形式出现。 我们将这些值绑定到ListView ,并使用DataTemplates来显示它们。 实际上,我从数组列表中创建了ListView 。 这些数组中的项目需要进行数据绑定和正确设置样式(例如,布尔数组需要创建复选框,而字符串数组需要文本框)。 每个创建的元素都需要放入ListView的列中。 当前的样式是使用带有数据绑定的DataTemplates ,即 <DataTemplate x:Key="testTemplate2"> <TextBlock Text="{Binding Path=Value[0]}" Margin="2" HorizontalAlignment="Center" VerticalAlignment="Center" /> </DataTemplate> 这对输入数组中的每个值重复,所以你有Value[1] , Value[2]等。 这意味着重复几乎相同的代码 8 次,然后对下一个类型执行相同的操作。 由于有大量的输入类型,这意味着大量的重复代码。 我的问题是:有没有更好的方法来做到这一点,所以我们不必重复数据模板,同时继续使用列? 顺便说一句,我使用的是
  • 如何使用图形突出显示控件中的换行文本?(How to highlight wrapped text in a control using the graphics?)
    问题 我需要使用fill rect突出显示控件中的特定字符。 通过使用如下所示的Graphics.MeasureString()方法,可以获取未包装文本时的位置, var size = g.MeasureString(tempSearchText, style.Font, 0, StringFormat.GenericTypographic); 如果文本是自动换行的,那么我将无法找到字符的确切边界以突出显示文本。 我需要获取给定字符在包装文本中的确切范围。 提供您的建议以实现这种情况。 回答1 没有针对哪个控件的明确说明,因此我正在测试3种不同的控件: TextBox , RichTextbox和ListBox 。 TextBox和RichTextbox具有相同的行为并共享相同的工具,因此无需定义两种不同的方法即可获得相同的结果。 当然,RichTextbox提供了更多选项,包括RTF。 另外,我正在测试Graphics.DrawString()和TextRenderer.DrawText()。 这是该测试的结果,因此可以更清楚地了解代码的作用。 警告: 对于此示例,我使用Control.CreateGraphics() ,因为TextBox和RichTextBox控件不提供Paint()事件。 对于真实世界的应用程序,您应该创建派生自TextBox或RichTextBox
  • 我在哪里使用代表? [关闭](Where do I use delegates? [closed])
    问题 关门了。 这个问题是基于意见的。 它当前不接受答案。 想要改善这个问题吗? 更新问题,以便可以通过编辑此帖子以事实和引用的形式回答。 7年前关闭。 改善这个问题 在现实世界中,有哪些地方需要代表? 我很好奇这种方法是最佳解决方案的情况或模式。 无需代码。 回答1 委托是一种定义了一种特定方法的命名类型。 正如类定义为它定义的给定类型的对象列出所有成员一样,委托也为其定义的方法的类型列出方法签名。 基于此语句,委托是函数指针,它定义该函数的外观。 谓词是在现实世界中使用委托的一个很好的例子。 在链接的示例中,您会注意到Array.Find使用数组进行搜索,然后使用谓词处理要查找的内容的条件。 在这种情况下,它将通过与谓词签名匹配的ProductGT10方法。 回答2 如“学习C#3.0:掌握C#3.0的基础知识”中所述 一般情况:当国家元首去世时,美国总统通常没有时间亲自参加葬礼。 相反,他派遣了一名代表。 该代表通常是副总统,但有时没有副总裁,总统必须派遣其他人,例如国务卿甚至第一夫人。 他不想将自己的授权“硬连线”给一个人。 他可以将这项责任委托给能够执行正确的国际协议的任何人。 总统事先定义了将委派什么责任(参加葬礼),传递什么参数(哀悼,客气话),以及他希望得到什么价值(善意)。 然后,当他担任总统职务时,他会在“运行时”将一个特定的人分配给该委托职责。 在编程场景中
  • 为什么 ControlCollection 不抛出 InvalidOperationException?(Why does ControlCollection NOT throw InvalidOperationException?)
    问题 按照这个问题 Foreach 循环处理跳过迭代的控件,它让我觉得在不断变化的集合上允许迭代: 例如,以下内容: List<Control> items = new List<Control> { new TextBox {Text = "A", Top = 10}, new TextBox {Text = "B", Top = 20}, new TextBox {Text = "C", Top = 30}, new TextBox {Text = "D", Top = 40}, }; foreach (var item in items) { items.Remove(item); } 投掷 InvalidOperationException:集合被修改; 枚举操作可能无法执行。 但是,在 .Net 表单中,您可以执行以下操作: this.Controls.Add(new TextBox {Text = "A", Top = 10}); this.Controls.Add(new TextBox {Text = "B", Top = 30}); this.Controls.Add(new TextBox {Text = "C", Top = 50}); this.Controls.Add(new TextBox {Text = "D", Top = 70}); foreach
  • 如果下拉值更改,则从数据库中获取值并填充所有文本框(Fetch value from Database and fill all textbox if dropdown value change)
    问题 我试图填充所有文本框值取决于下拉值选择。 我还通过 SQL 查询填充下拉值。 这是 HTML 代码: <select name="name" ID="name" class="form-control"> <option value="Select">Select</option> <?php $qu="Select DISTINCT Cname from Client_table"; $res=mysqli_query($con,$qu); while($r=mysqli_fetch_row($res)) { echo "<option value='$r[0]'> $r[0] </option>"; } ?> </select> <label>Address</label><input type="text" name="add"/> <label>Contact</label><input type="text" name="con"/> 数据库: Client_table C_no Cname Caddress Ccontact 1 Mohit xyz 0123645789 2 Ramesh abc 7485962110 在这里,我很困惑如何根据下拉选择查找客户的地址和联系方式并使用此值填充文本框 回答1 <?php $servername = "localhost"
  • 文本框值到数组(Textbox values to array)
    问题
  • 文件和文件夹的操作——文件流的使用
    1、文件的读取和写入思路:主要用到了File类的CreateText方法和StreamWriter类的WriteLine方法。(1)、File类的CreateText方法,该方法实现创建或打开一个文件用于写入UTF-8编码的文本。语法如下:public static StreamWriter(string path)(2)、StreamWriter类的WriteLine方法该方法实现将后跟行结束符的字符串写入文件流,语法如下:public virtual void WriteLine(string value)参数说明:value:要写入的字符串,如果value为null,则仅写入行结束字符。public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = saveFileDialog1.FileName; } else { textBox1.Text = ""; } } private void button2_Click(object
  • 如何使画布文本可选?(How to Make Canvas Text Selectable?)
    问题 任何建议都将受到高度赞赏。 回答1 文本选择具有许多视觉上的,一些非视觉上的组成部分。 首先,使文本成为可选文本,您必须保留一个数组,该数组包含文本的位置,文本的含义以及所使用的字体。 您将通过Canvas函数measureText使用此信息。 通过使用measureText和文本字符串,您可以确定单击图像时光标应落在哪个字母上。 ctx.fillText("My String", 100, 100); textWidth = ctx.measureText("My String").width; 您仍然必须从“字体”属性解析字体高度,因为该属性当前未包含在文本指标中。 画布文本默认情况下与基线对齐。 有了这些信息,您现在有了一个边界框,可以对其进行检查。 如果光标位于边界框内,那么您现在将承担推论一下故意选择了哪个字母的不幸任务。 光标的起始位置。 这可能涉及多次调用measureText。 到那时,您知道光标应该移到哪里了。 当然,您需要将文本字符串作为文本字符串存储在变量中。 一旦定义了范围的起点和终点,就必须绘制一个选择指示器。 这可以在新的图层(第二个画布元素)中完成,也可以使用XOR合成模式绘制一个矩形来完成。 也可以通过简单地清除和重绘填充矩形上方的文本来完成此操作。 总而言之,在Canvas中进行文本选择,文本编辑非常费力,并且重新使用已经编写的组件是明智的
  • 如何观察 ng-content 中输入元素的变化(How to observe input element changes in ng-content)
    问题 当子组件观察到输入变化时如何调用父组件的功能? 下面是 HTML 结构。 # app.comopnent.html <form> <textbox> <input type="text"> </textbox> </form> # textbox.component.html <div class="textbox-wrapper"> <ng-content> </div> 限制如下。 TextboxComponent 有ng-content并且需要将input元素投影到它。 当input元素被输入时,在 TextboxComponent 中发出一个事件。 不想让input元素具有更多属性,例如<input type="text" (input)="event()"> 。 我正在编写代码,但找不到解决方案... # input.directive.ts @Directive({ selector: 'input', ... }) export class InputDirective { ngOnChanges(): void { // ngOnChanges() can observe only properties defined from @Input Decorator... } } # textbox.component.ts @Component({
  • 动态和不可变的 UIElement 数组(Dynamic and Immutable UIElement Arrays)
    问题 我有一个包含多个相同大小的Canvas的WrapPanel 。 每个Canvas都有一些UIElement (即TextBox 、 TextBlock 、 Button等)作为子项。 每个Canvas (包括其UIElement子项)的创建和要创建的Canvas的数量都在运行时代码后面(无 XAML)中完成。 最初我做了以下工作: // declare as class properties, so all function can access them WrapPanel wp = new WrapPanel(); Canvas[] cv = new Canvas[500]; TextBox[] tb = new TextBox[500]; // A function (e.g. a Button_Click event) that generates multiple Canvas in a WrapPanel for (int i = 0; i<myInt; i++) { cv[i] = new Canvas(); tb[i] = new TextBox(); cv[i].Children.Add(tb[i]); wp.Children.Add(cv[i]); } 上面的代码很简单,工作正常 - 直到我在我可以的地方实现添加、减号和销毁按钮 1. Add an
  • 如何在文本框中找到最长的句子和平均句子长度?(How do I find the longest sentence and the average sentence length in a textbox?)
    问题 在文本框中输入几个句子后,我需要通过单击按钮找到文本框中最长的句子。 最长的句子应显示在 MessageBox 中。 另一个按钮应该在 MessageBox 中显示句子的平均长度。 回答1 好的,我是新手,但我会尽力提供帮助! 我会考虑将文本框中输入的句子拆分为数组或列表,然后进行处理。 Dim sentences As String() sentences = TextBox1.Text.Split("?") Dim avgSum As Double = 0 Dim avg As Integer = 0 Dim longest As Integer = 0 For Each sentence As String In sentences If sentence.Length < longest Then longest = sentence.Length avgSum = avgSum + sentence.Length Next avg = avgSum / sentences.Length MsgBox("Average is: " + avg) MsgBox("Longest is: " + longest) 回答2 定义三个函数:第一个函数提取所有句子,第二个函数确定最长的句子,第三个函数确定平均句子长度。 提取所有句子 ''' <summary> '''
  • 在 PHP 中按顺序解析 XML(Parse XML sequentially in PHP)
    问题 我有一个 XML 字符串,如下所示: <?xml version="1.0" encoding="utf-8"?> <document id="0" name="RegSimple" Version="0.1"> <Description> Configuration document for simple registration of incidents. This document will contain both the fixed and the user-defined fields to show on the registration screen. </Description> <Fields> <Textbox id="1" name="IncidentID" visibility="Hidden" width="500" displayreadonly="False" /> <Comment id="200" height="10" name="c1" caption=" " /> <Header id="100" name="Header" caption="Description" /> <Radiobox id="2" name="Type" caption="Feedback type" width="500" type="19"
  • 如何按名称查找文本框并将其内容写入文本文件[重复](How to find a text box by name and write its contents to a text file [duplicate])
    问题
  • Loop through folders and only copy files that match certain criteria
    问题 我正在编写一个程序,将所需的某些文件从一个文件夹复制到另一个文件夹。 但是,我只希望它复制符合某些条件的文件,更具体地说,它应该只复制不在禁止文件、禁止扩展或禁止文件夹列表中的文件,这些文件存储在如下数组中: Public BannedExtensions As String() = {".bak", ".bak2", ".cry", ".max", ".psd", "log", ".lib", "pdb", ".exp"} Public BannedFolders As String() = {"Tools", "Editor", "Code", "LogBackups", "statoscope", "BinTemp", "USER", "rc"} Public BannedFiles As String() = {"Editor.exe", "error.bmp", "error.dmp", "luac.out", "tags.txt"} 然后代码应该将它们移动到一个临时目录,然后将它们压缩并将它们保存到存储在File_Name变量中的位置。 这是我的整个代码: Option Strict On Public Class Form1 'define the two variables used for tracking file name and where to
  • c#串口编程(傻瓜教程,手把手教你学会)
    在单片机项目开发中,上位机也是一个很重要的部分,主要用于数据显示(波形、温度等)、用户控制(LED,继电器等),下位机(单片机)与 上位机之间要进行数据通信的两种方式都是基于串口的: USB转串口 —— 上位机和下位机通过USB转串口连接线直接相连进行数据交互;串口转WIFI(ESP8266) —— 上位机和下位机基于TCP/IP协议通过WIFI传输数据;串口转蓝牙(HC-06)—— 不多用,暂不介绍; 上位机软软件开发主要包括以下两种:   1、Windows上位机(EXE可执行程序)     在Windows上,最早用VB语言开发,后来由于C++的发展,采用MFC开发,近几年,微软发布了基于.NET框架的面向对象语言C#,更加稳定安全,再配合微软强大的VS进行开发,效率奇高;     另外,如果想要在Linux上跨平台运行,可以选用Qt;如果想要更加丰富好看的数据显示界面,可以选用Labview开发;   2、Android上位机(APP)     在Android操作系统上,主要采用Java语言,使用WIFI或者蓝牙基于TCP/IP协议传输数据,利用Android Studio开发;   在此,我们主要介绍如何通过VS + C#开发电脑上位机,其它上位机的开发暂且不论。  注:VS下载与安装参考这篇较详细的博客    https://blog.csdn.net/qq
  • Parse XML sequentially in PHP
    I have an XML string as follows: <?xml version="1.0" encoding="utf-8"?> <document id="0" name="RegSimple" Version="0.1"> <Description> Configuration document for simple registration of incidents. This document will contain both the fixed and the user-defined fields to show on the registration screen. </Description> <Fields> <Textbox id="1" name="IncidentID" visibility="Hidden" width="500" displayreadonly="False" /> <Comment id="200" height="10" name="c1" caption=" " /> <Header id="100" name="Header" caption="Description" /> <Radiobox id="2" name="Type" caption="Feedback type" width="500" type=