Solved

C# string from array wont show up in textbox

Posted on 2008-10-31
12
749 Views
Last Modified: 2013-12-17
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
Comment
Question by:X3R
  • 6
  • 3
  • 2
  • +1
12 Comments
 
LVL 6

Expert Comment

by:RishadanPort
ID: 22854346
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
 
LVL 13

Expert Comment

by:sm394
ID: 22854357

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

displayText=s;
0
 
LVL 8

Expert Comment

by:bramsquad
ID: 22854363
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
Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

 
LVL 6

Expert Comment

by:RishadanPort
ID: 22854368
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
 
LVL 8

Expert Comment

by:bramsquad
ID: 22854398
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
 

Author Comment

by:X3R
ID: 22854882
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
 
LVL 6

Expert Comment

by:RishadanPort
ID: 22854892
>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
 
LVL 6

Expert Comment

by:RishadanPort
ID: 22854900

    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
 

Author Comment

by:X3R
ID: 22854962
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
 
LVL 6

Accepted Solution

by:
RishadanPort earned 125 total points
ID: 22854964
Change the word "toppings" to the word "args"
0
 
LVL 6

Expert Comment

by:RishadanPort
ID: 22854967
This is just basic C# syntax. I suggest you to get yourself a C# book to help you.
0
 

Author Closing Comment

by:X3R
ID: 31512217
Thank you. Didn't spot the obvious ;)
0

Featured Post

How Do You Stack Up Against Your Peers?

With today’s modern enterprise so dependent on digital infrastructures, the impact of major incidents has increased dramatically. Grab the report now to gain insight into how your organization ranks against your peers and learn best-in-class strategies to resolve incidents.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

821 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question