通过同一文本框中的相同按钮生成,添加,编辑和删除

时间:2015-05-29 14:03:07

标签: c# winforms textbox

我有一个winform按钮的代码,它可以从文本文件生成一个随机行,或者让我在这个文件中添加一个新句子。 (取决于radiobutton的活跃程度)。

private void button1_Click(object sender, EventArgs e)
       {

           string FilePath = @"C:\file.txt";

if (radioButtonNew.Checked)
      {
           string[] Lines = File.ReadAllLines(FilePath);
           Random rand = new Random();
           string SentNew = Lines[rand.Next(0, Lines.Length)];
           TextBox.Text = SentNew;
      }

     else
      {
        File.AppendAllText(FilePath, TextBox.Text + environment.NewLine);
        MessageBox.Show("Value added"); 
      }

但是例如我不喜欢随机结果之一并且不想仅仅添加另一个结果.. 而是要更正生成的结果,然后再次按一个按钮并更改一行。

或者我想从文件中删除生成的行。只需再添加两个单选按钮,是否可以在同一按钮和同一文本框中完成?

我不知道怎么做,你能帮忙吗?我的目标是随机生成,添加我自己的(我有),编辑和删除生成的行。问题是 - 我不太清楚如何告诉程序编辑或删除它刚刚生成的文本框中的随机行。

1 个答案:

答案 0 :(得分:1)

我在上述评论中描述的快速(未经测试)示例:

    private Random rand = new Random();

    private int Index = -1;
    private List<String> Lines = new List<string>();

    private void button1_Click(object sender, EventArgs e)
    {
        string FilePath = @"C:\file.txt";

        if (radioButtonNew.Checked)
        {
            Lines = new List<String>(File.ReadAllLines(FilePath));
            Index = rand.Next(0, Lines.Count);
            label1.Text = "Index: " + Index.ToString();
            TextBox.Text = Lines[Index];
        }
        else if (radioButtonAppend.Checked)
        {
            File.AppendAllText(FilePath, TextBox.Text + Environment.NewLine);
            Lines = new List<String>(File.ReadAllLines(FilePath));
            Index = Lines.Count - 1;
            label1.Text = "Index: " + Index.ToString();
            MessageBox.Show("Line added");
        }
        else if (radioButtonModify.Checked)
        {
            if (Index >= 0 && Index < Lines.Count)
            {
                Lines[Index] = TextBox.Text;
                File.WriteAllLines(FilePath, Lines);
                MessageBox.Show("Line Modified");
            }
            else
            {
                MessageBox.Show("No Line Selected");
            }
        }
        else if (radioButtonDelete.Checked)
        {
            if (Index >= 0 && Index < Lines.Count)
            {
                Lines.RemoveAt(Index);
                File.WriteAllLines(FilePath, Lines);
                Index = -1;
                label1.Text = "Index: " + Index.ToString();
                MessageBox.Show("Line Deleted");
            }
            else
            {
                MessageBox.Show("No Line Selected");
            }
        }
    }