我正在尝试用c#(winforms)做一些事情,但我遇到了一个小问题。我已经尝试了所有与此问题相关的代码但没有成功。请在回答之前阅读问题。
我有2个功能。我想创建一个函数,它将从特定的.txt文件中获取一个随机行,并将其放在另一个文件中。
以下是一个例子:
//This is a ContexMenuStrip, a right click menu item that need to load Function1 (check the picture below
private void pdkName_Click(object sender, EventArgs e)
{
Function1();
}
private void Function1()
{
//CODE to Count and Display random line from .txt file
}
到目前为止,我已尝试过许多以前在stackoverflow.com上发布过的代码,并且我也尝试了大量的组合。我会在这里贴一些:
Random rand = new Random();
IEnumerable<string> lines = File.ReadLines(@"D:\FirstName.txt");
var lineToRead = rand.Next(1, lines.Count());
var line = lines.Skip(lineToRead - 1).First();
int counter = 0;
string line;
// Read the file and display it line by line.
System.IO.StreamReader file =
new System.IO.StreamReader(@"D:\FirstNames.txt");
while ((line = file.ReadLine()) != null)
{
System.Console.WriteLine(line);
counter++;
}
file.Close();
System.Console.WriteLine("There were {0} lines.", counter);
// Suspend the screen.
System.Console.ReadLine();
//这个工作但只适用于第一行,不能与它进行任何组合(从其他函数中使其随机)
using (StreamReader reader = File.OpenText(@"D:\FirstName.txt")
{
textBox1.Text = reader.ReadLine();
}
var lines = File.ReadAllLines(@"D:\FirstNames.txt");
var r = new Random();
var randomLineNumber = r.Next(0, lines.Length - 1);
var line = lines[randomLineNumber];
string[] lines = File.ReadAllLines(@"D:\FirstNames.txt");
Random rand = new Random();
return lines[rand.Next(lines.Length)];
该函数需要计算文件,选择一个随机行并返回它。调用该函数的ContexMenuStrip中的项目菜单用于TEXTBOX。
所以一般来说,我需要一个.txt文件中的随机名称显示在文本框中,单击右键单击文本框并选择加载我的功能的项目。这是一张简单解释的小图片。
答案 0 :(得分:3)
像fabian所说或在方括号内随机声明并直接调用下一个方法
string[] lines = File.ReadAllLines(@"C:\...\....\YourFile.txt");
textBox1.Text = lines[new Random().Next(lines.Length)];
答案 1 :(得分:1)
将您的随机数定义为表单中的私有成员:
private _rand = new Random();
然后在ContextMenuStrip的事件中粘贴此代码(确保编辑文件名“yourFile.txt”):
var lines = File.ReadAllLines(@"D:\FirstNames.txt");
var randomLineNumber = _rand.Next(0, lines.Length - 1);
var line = lines[randomLineNumber]; //getting the random line
using (StreamWriter sw= File.AppendText("yourFile.txt"))
{
sw.WriteLine(line); //append the random line in your file
}