LukeD524
LukeD524

Reputation: 41

C# - How to load text from text file in a listbox into a richTextBox?

Now solved. Thanks for your answers!

This is my code right now:

  //Listbox scripts is the name of my folder
    private void Form1_Load(object sender, EventArgs e)
    {
        foreach (var file in Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + @"Listbox scripts"))
        {
            string file2 = file.Split('\\').Last();
            listBox1.Items.Add(file2);
        }
    }

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        webBrowser1.Document.InvokeScript("SetText", new object[]
        {
            File.ReadAllText(string.Format("./Listbox scripts/{0}", listBox1.SelectedItem.ToString()))
        });
    }

I'm new to coding in C# and I have a textbox that has the names of text files in a directory and when I click on the text file in the listbox it's supposed to load the text from it into my textbox (named 'ScriptBox')

Here's my code:

    private void Form1_Load(object sender, EventArgs e)
    {
            string User = System.Environment.MachineName;
        textBox1.Text = "{CONSOLE} Welcome to Linst, " + User + "!";
        directory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + @"Scripts");
        files = directory.GetFiles("*.txt");
        foreach (FileInfo file in files)
        {
            listBox1.Items.Add(file.Name);
        }
    }

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        var selectedFile = files[listBox1.SelectedIndex];

        ScriptBox.Text = File.ReadAllText(selectedFile.FullName); //these parts are the parts that dont work
    }

Thanks in advance!

Upvotes: 3

Views: 383

Answers (3)

steb
steb

Reputation: 602

I actually don't see a problem with your code, could it be a typo somewhere? I did this and it worked for me:

private void Form1_Load(object sender, EventArgs e)
{
    foreach (var file in System.IO.Directory.GetFiles(@"c:\"))
    {
        listBox1.Items.Add(file);
    }
}


private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (listBox1.SelectedItem != null)
    {
        textBox1.Text = System.IO.File.ReadAllText(listBox1.SelectedItem.ToString());
    }
}

Upvotes: 1

Sayed M. Idrees
Sayed M. Idrees

Reputation: 1408

Your code is nice, and perfect but it just need a little validation check in list index selection Try thing in your listbox_selectedIndexChanged

 private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (listBox1.SelectedIndex!=-1)
        {
            FileInfo selectedFile = files[listBox1.SelectedIndex];
            ScriptBox.Text = File.ReadAllText(selectedFile.FullName);
        }
    }

Upvotes: 1

Daniaal
Daniaal

Reputation: 922

Add the below into your Form1.cs. What this is going to do is when a user clicks a listbox item, its going to call (raise an event) the "listBox1_MouseClick" method and set the text of the textbox to the text of the listbox item. I just quickly created an app and implemented the below and it works.

private void listBox1_MouseClick(object sender, MouseEventArgs e)
{
    textBox1.Text = listBox1.Text;
}

And add the below to the Form1.Designer.cs where the rest of your list box properties are. The below is subscribing to an event, the listBox1_MouseClick method in Form1.cs, so when a user clicks on a listbox item, the listBox1_MouseClick method is going to run.

 this.listBox1.MouseClick += new MouseEventHandler(this.listBox1_MouseClick);

I hope the above makes sense.

Upvotes: 2

Related Questions