Before I mark this thread as resolved, is there anything that I need to do to give you a rating or credit or anything to inform that you provided excellent assistance?
Not really... I just provide my help on forums because I enjoy doing it. People like to know their help is appreciated though, that's the main thing.

It seems this could be my last post here though as it looks like you've got things working, but I have a few final things to point out to you just for your benefit in the current code you have. Other than this, good job You got through it on your own, and I like to see when people can do that with the bit of guidance I can provide.

Basically for String.Format(), other than the extra formatting you can apply, if you're just wanting to place arguments in their places within a string, you can think of it almost like the way an indexing system works inside an array. {0} will be a placeholder for the first param, and so on... The syntax is like this, as you've figured out: String.Format("My string to be parsed in a certain format", argument 1, argument 2, etc...), where argument 1 would be indexed with "{0} inside the string, argument 2 would be {1}, etc...

I understand what you're trying to do here:
C# Code:
  1. int[] frequencies = new int[13]; //frequencies[0] is the frequency of the sum 2, frequencies[10] is for sum 12

C# Code:
  1. for (int i = 2; i < 13; i++)
  2. {
  3.     Freqbox.Items.Add(String.Format("Frequency of sum {0} = {1}", i + offset, frequencies[i]));
  4. }

But respectively, you're not using 2 indexes within this array here, and you initialize it to a larger size than it needs to be You aren't using a Dictionary here, perhaps because of a lack of understanding still, but IF you were to use an array, what you could do is give it a size of only the number of elements you need and use the index + 2 to start from 0, but display that it's the sum of # of times 2 showed up.

Look through the code you have though, specifically your offset variable. It's not doing anything because it's always 0.

C# Code:
  1. Freqbox.Items.Add(String.Format("Frequency of sum {0} = {1}", i + offset, frequencies[i]));

C# Code:
  1. frequencies[sum - offset]++;

1. i + 0
2. frequencies[sum - 0]

It doesn't do anything here It can be removed.

Based on this loop:
C# Code:
  1. for (int i = 2; i < 13; i++)

Your comment here is not accurate for what you're doing:
C# Code:
  1. //frequencies[0] is the frequency of the sum 2, frequencies[10] is for sum 12

It looks like you're just skipping index[0] and so you're starting 2 indexes higher because you want to use the index to display that you're starting from a sum of 2, since with 2 dice, you can't get a sum of 1 or 0. It's not possible. What that loop does is it iterates from i being 2, all the way up to 1 less than 13, which is 12.

The way you're doing it, is declaring the integer as a size of 13 elements, and you're only using indexes 2 to 12 within the array, and you've kept indexes 0, and 1, unused.

You could set your array to 11. Take a look at my example code so I can show you:
C# Code:
  1. int[] x = new int[11];
  2. for (int i = 0; i < x.Length; i++)
  3. {
  4.     //Note: With Console.WriteLine() we can use string formatting the same way we use it in String.Format() without having to use String.Format()
  5.     Console.WriteLine("Sums of {0}", i + 2);
  6. }

This way we have all of the placeholders in our array being used, nothing is wasted. My advice to you would be to NOT use hardcoded sizes in your for loops though when you're using it to loop through an array, because if at a later date you increase the size of the array, you have to manually change the definition within the for loop itself. So use the Length property for the array size like shown in my example above ^^.

What you're doing is this:
C# Code:
  1. for (int i = 2; i < 13; i++)

Do this:
C# Code:
  1. for (int i = 2; i < frequencies.Length; i++)

Also, for reasons of how the Random class works, you should keep it outside of your method when declaring an instance of it. Don't put it within the RollDicebtn_Click void, keep it outside and reference the same instance, without declaring a new instance everytime that void method is called:
C# Code:
  1. private Random randomNumber = new Random();
  2. private void RollDicebtn_Click(object sender, EventArgs e)
  3. {
  4. }