Solved

C# string from array wont show up in textbox

Posted on 2008-10-31
12
751 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

739 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