• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 761
  • Last Modified:

C# string from array wont show up in textbox

Hi! Here is my problem.

I need string "One, Two, Three, Four" to show up in textBox1 but it doesn't.

I use different class files but they are in one namespace.

I would appreciate if anybody could help me correct my code.
Mario.


//Form1.cs
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
 
    public void LoadMain1(object sender, EventArgs e) 
    //This is Load Event for Form1
    {   
        this.textBox1.Text = Strings.displayText;
    }
 
}
 
 
//Strings.cs
public class Strings
{
 
    public static string displayText;
 
    public Strings(string[] args)
    {
 
        string[] toppings = new string[4] { "One", "Two", "Three", "Four" };
 
        StringBuilder result = new StringBuilder();
 
        for (int i = 0; i < toppings.Length; i++)
        {
            if (i == 0)
                
            result.Append(toppings[i]);
 
            else
 
            result.Append(", ").Append(toppings[i]);
        }
 
        displayText = result.ToString();
 
     }
}

Open in new window

0
X3R
Asked:
X3R
  • 6
  • 3
  • 2
  • +1
1 Solution
 
RishadanPortCommented:
Try doing this modification:

this line:

result.Append(toppings[i]);

change to:

result = result.Append(toppings[i]);



and this line:

result.Append(", ").Append(toppings[i]);

change to:

result = result.Append(", ").Append(toppings[i]);
0
 
sm394Commented:

string s = "";
            foreach (string str in toppings)
                s += str;

displayText=s;
0
 
bramsquadCommented:
X3R,

The reason that that value is not populated is because you never set it.  It's set when you instantiate the class (in the constructor).  Without that instantiation, it will have no value.

Is there any reason why you need a static variable?  If not you can just make it public (or better yet private and add an accessor function).  Something like this:
Strings myString = new Strings();
this.textBox1.Text = myString.displayText;

Open in new window

0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
RishadanPortCommented:
Also you have something else wrong. The function that modifies it should be a static function as well.

Do something like this:


    //This is Load Event for Form1
    {
        this.textBox1.Text = Strings.parseArray( ... pass array here)
    }


public class Strings
{
 
    public static string displayText;
 
    public static string ParseArray(string[] args){
       //insert code here
    }
}


0
 
bramsquadCommented:
By the way, you don't need to pass in params if they're not going to set anything in your constructor.

Something like this:

String myString = new Strings(new string[4] { "Five", "Six", "Seven", "Eight" });

will still return "One,Two,Three,Four" because you never do anything with your args[] variable.
0
 
X3RAuthor Commented:
bramsquad,

I tried yor solution but it worked in ConsoleApplication (it returned text that i need into textbox) but not with textbox.

VB2005 gave me an error:
No overload for method 'Strings' takes '0' arguments

when I added this line:
Strings myString = new Strings();
 
//I also changed 
public static string displayText;
 
//to
 
public string displayText;

Open in new window

0
 
RishadanPortCommented:
>No overload for method 'Strings' takes '0' arguments

That's because you declared that function

Strings(string[] args)

at this line:
Strings myString = new Strings( ... PUT string array here ...);
0
 
RishadanPortCommented:

    public Strings(string[] args)
    {
        string[] toppings = new string[4] { "One", "Two", "Three", "Four" };    <-- remove this line
        ...
    }

and put it here:

string[] toppings = new string[4] { "One", "Two", "Three", "Four" };
Strings myString = new Strings(toppings);
string displayText = myString.displayText;
0
 
X3RAuthor Commented:
Now it gives me three errors:

The name 'toppings' does not exist in the current context

in this code:
for (int i = 0; i < toppings.Length; i++)
{
   if (i == 0)
                
   result = result.Append(toppings[i]);
 
   else
 
   result = result.Append(", ").Append(toppings[i]);
}

Open in new window

0
 
RishadanPortCommented:
Change the word "toppings" to the word "args"
0
 
RishadanPortCommented:
This is just basic C# syntax. I suggest you to get yourself a C# book to help you.
0
 
X3RAuthor Commented:
Thank you. Didn't spot the obvious ;)
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 6
  • 3
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now