根据文本文件内容的行数,动态加载TextBox并在每个TextBox中显示一行内容。实现方法如下:
(1)在Visutal Studio中新建一个“Windows应用程序”
(2)在Form1上布置一个Button
(3)窗体代码 Form1.cs
using System;
using System.Windows.Forms;
using System.IO;
namespace WindowsFormsApplication6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Text = "读文本文件";
}
private void button1_Click(object sender, EventArgs e)
{
// 读入文本文件
// 注意:利用记事本创建的文本文件的编码空洞格式必须是Unicode或UTF-8
string[] lines = File.ReadAllLines(@"d:\sample.txt");
// 动态加载TextBox并在每个TextBox中显示一行内容
TextBox textBox = null;
foreach (string line in lines)
{
textBox = AddTextBox(textBox);
textBox.Text = line;
}
}
///
/// 向窗体上动态添加TextBox
/// ^^^^^^^^^^^^^^^^^^^^^^^
态纤 /// 新添加的文本框位于由参数PrevTextBox指定的前一个文本框的下方
/// 如果PrevTextBox=null表示添加的文本框为第一个
///
/// 前一个文本框
斗闭枯 ///新添加的文本框
private TextBox AddTextBox(TextBox prevTextBox)
{
TextBox textBox = new TextBox();
textBox.Left = 10;
if (prevTextBox == null)
{
// 第一个文本框
textBox.Top = 10;
}
else
{
// 新添加的文本框在前一个文本框的下方
textBox.Top = prevTextBox.Top + prevTextBox.Height + 5;
}
this.Controls.Add(textBox);
return textBox;
}
}
}
(4)运行结果
你把尘皮你的text控件都放在一个panel里面,name 都用规律的,比如 txt1,txt2,txt3 .....,然后循环如下
System.IO.StreamReader sr = new System.IO.StreamReader("test.txt");
int id = 0;
while (!sr.EndOfStream)
派凳差 {
Control[] controls = this.pnl1.Controls.Find("txt" + (id++).ToString(), true);
if (controls == null) continue;
粗碧 foreach (Control control in controls)
{
if (control is TextBox)
control.Text = sr.ReadLine();
}
}
StreamReader s = new StreamReader();
TextBox1.Text= s.ReadLine();