我对 C# 很陌生,我想要一个包含文件夹中所有文本文件的列表框,如果用户双击列出的文件,该文件将显示在文本框中。
我不想使用 openFileDialog 函数,因为文本文件位于我使用 username:password@server.com/folder 访问的网络服务器上。
有点像文本编辑器,仅限于编辑 1 个文件夹中的文件 :)
如果可以使用 openFileDialog,请告诉我如何操作。
我希望你能明白我想做什么。
问候,
我对 C# 很陌生,我想要一个包含文件夹中所有文本文件的列表框,如果用户双击列出的文件,该文件将显示在文本框中。
我不想使用 openFileDialog 函数,因为文本文件位于我使用 username:password@server.com/folder 访问的网络服务器上。
有点像文本编辑器,仅限于编辑 1 个文件夹中的文件 :)
如果可以使用 openFileDialog,请告诉我如何操作。
我希望你能明白我想做什么。
问候,
据我了解,您想要遍历特定目录中的文件,然后在列表框中双击打开它们后允许对其进行编辑。
这可以使用var Files = Directory.GetFiles("path", ".txt");
Files
将是一个string[]
文件名。
然后用类似这样的文件填充列表框:
ListBox lbx = new ListBox();
lbx.Size = new System.Drawing.Size(X,Y); //Set to desired Size.
lbx.Location = new System.Drawing.Point(X,Y); //Set to desired Location.
this.Controls.Add(listBox1); //Add to the window control list.
lbx.DoubleClick += OpenFileandBeginEditingDelegate;
lbx.BeginUpdate();
for(int i = 0; i < numfiles; i++)
lbx.Items.Add(Files[i]);
lbx.EndUpdate();
现在您的事件委托应如下所示:
OpenFileandBeginEditingDelegate(object sender, EventArgs e)
{
string file = lbx.SelectedItem.ToString();
FileStream fs = new FileStream(Path + file, FileMode.Open);
//Now add this to the textbox
byte[] b = new byte[1024];
UTF8Encoding temp = new UTF8Encoding(true);
while (fs.Read(b,0,b.Length) > 0)
{
tbx.Text += temp.GetString(b);//tbx being the textbox you want to use as the editor.
}
}
现在通过 VS 窗口编辑器添加事件处理程序,单击相关控件并转到该控件的属性窗格。然后,您需要切换到事件窗格并滚动直到找到DoubleClick
事件,如果您使用设计器应该自动插入有效的委托签名并允许您编写事件的逻辑。