添加和读取多个文本框

时间:2014-01-16 15:08:48

标签: c# winforms

在Windows窗体中创建和读取多个文本框的最佳方法是什么?在我的应用程序中,我有一个Windows窗体,客户可以在其中输入多个地址,电子邮件地址

现在我有一个这样的表格,

TextBoxAddress1  TextBoxEmail1
TextBoxAddress2  TextBoxEmail2
.....
.....
.....
TextBoxAddressN  TextBoxEmailN

为此,我在一个表单上拖放了多个控件,并为每个控件命名。

如果我使用这种方法,我必须编写冗长的代码来查看是否填充了第一行(TextBoxAddress1 TextBoxEmail1)以进行验证,即使是阅读,我也必须编写多行代码。

有没有更好的方法来实现这一目标?

6 个答案:

答案 0 :(得分:2)

您可以使用以下代码动态地向表单添加TextBox

private int m_CurrTexboxYPos = 10;
private List<TextBox> m_TextBoxList = new List<TextBox>();

private void CreateCheckBox()
{
    m_CurrTexboxYPos += 25;
    TextBox textbox = new TextBox();
    textbox.Location = new System.Drawing.Point(0, m_CurrTexboxYPos);
    textbox.Size = new System.Drawing.Size(100,20);
    Controls.Add(textbox);
    m_TextBoxList.Add(textbox);
}

答案 1 :(得分:1)

我有一个列表框/列表视图,其中包含您的电子邮件和添加/编辑/删除按钮,这些按钮显示一个弹出窗体 - 用于验证电子邮件的逻辑等等将在一个地方,您的列表可以增长而无需您添加控件到表单。

你可以动态创建文本框 - 但是你最终会编写代码以确保它们在表单上很好地布局等等 - 拥有某种类型的列表更容易IMO并且还有助于绑定(例如,对于电子邮件对象)< / p>

答案 2 :(得分:1)

动态添加控件非常简单,前提是您可以使用DockStyle和独占容器(例如Panel)。如果您无法使用DockStyle,那么您需要编写逻辑来确定LocationSize(这不好玩)。

在一个简单的表单上,我有两个按钮和一个面板,Button1添加了一个新的TextBoxPanel1Button2遍历{{1}中的控件然后检查它们是否是正确的类型或引发异常。这是您放置验证或读取逻辑的地方。 Panel1需要Panel1,否则您将从可查看的屏幕上运行控件。

此概念可以切换为继承自AutoScroll = true;(所有.Net本机控件或您自己的自定义控件)的任何内容。

UserControl

答案 3 :(得分:0)

为您需要的每个分组编写用户控件。至少有一个用于地址,一个用于电子邮件等,然后所有验证,对数据库访问的调用都包含在一个位置

这只是好的设计。这样,如果您有多个标签,例如家庭信息,工作信息,紧急联系信息,您可以将它们放在表单上。这对于用户个人资料来说非常常见。

然后在用户个人资料页面上的每个分组列表视图或其他任何已编辑/删除/添加的列表视图,然后弹出一个包含相应用户控件的对话框。

答案 4 :(得分:0)

最简单的说,ListBox adove TextBox with Button。

1.

此外,您可以使用DataGridView,BuiltIn功能进行添加\编辑\删除。

此处使用DataGridView(ShowHeader设置为false,EditMode设为On EnterAutoSizeMode属性中有一列Fill

enter image description here

答案 5 :(得分:0)

你拥有的可重复代码越少,程序员就越好。

每当你看到模式(可重复的东西)时,你可以尝试优化它。除非它太小而无法担心。

在您的情况下,首先确定可重复事物的基本内容。你总是要输入地址和电子邮件地址吗?然后将它们组合成一个控件,可以进行验证。您是否经常使用此控件(或重复N次)?那么也许切换到列表是有意义的(ListBoxListViewDataGridView)。

你是否懒得来打扰配置?然后只需优化显然会重复的内容:将验证放入常用方法并从每个TextBox事件中调用它。或者使用方法内置创建自己的TextBox。或者使用循环在Ok按钮事件中立即进行验证..或者不使用循环。

要找到最佳方法,您必须首先确定谁最适合。因为顾客想要一些有光泽,易于使用,动画,猫和胸部的东西..好吧,没有猫和胸部。重点是:您愿意为客户做出最好的工作。

如果我必须输入 table 数据(或表格中的数据),我会选择DataGridView,所以它看起来像这样......或者更好:

enter image description here