2014-01-22 3 views
0

У меня возникли проблемы с форматированием текста при попытке вывода моего массива в текстовое поле.вывод многомерного массива в текстовое поле сетки

Я должен вывести что-то подобное; http://imgur.com/jQFYsXA,c0ihHyI вид как стол минус границы.

Ive удалось создать нечто подобное, но у меня нет идей. http://imgur.com/ZwHh7qj

Мой код:

string[,] toys = new string[5, 4]; 
for (int week = 0; week <= 3; week++) 
{ 
    for (int day = 0; day <= 4; day++) 
    { 
     toys[day, week] = Microsoft.VisualBasic.Interaction.InputBox("Please enter value for Day " + Convert.ToString(day + 1) + " in week " + Convert.ToString(week + 1) + "."); 
    } 
} 
txtOutput.Text += "Mon" + "\t" + "Tue" + "\t" + "Wed" + "\t" + "Thu" + "\t" + "Fri" + "\t" + "\r\n"; 
txtOutput.Text += "Week 1" + "\t" + "\r\n"; 
txtOutput.Text += "Week 2" + "\t" + "\r\n"; 
txtOutput.Text += "Week 3" + "\t" + "\r\n"; 
txtOutput.Text += "Week 4" + "\t" + "\r\n"; 

foreach (string text in toys) 
{ 

    txtOutput.Text += text + "\t"; 
} 
+0

Это Silverlight или Web Forms? Ни один из них не имеет текстового поля, который работает так. –

+0

Это не единственная ошибка здесь, но почему '' Mon "+" \ t "' вместо '" Mon \ t "'? –

+0

О, меня научили использовать визуальный базовый входной блок (для текущего проекта, над которым он работал), поэтому ему пришлось использовать это. Также не зная, что я мог бы кодировать его таким образом «Mon \ t», кажется намного проще! –

ответ

2

Самый простой способ сделать это, рисуя линию по линии следующим образом:

//first, set up the toys index by accepting some inputs 
string[,] toys = new string[5, 4]; 
for (int week = 0; week <= 3; week++) 
{ 
    for (int day = 0; day <= 4; day++) 
    { 
     toys[day, week] = Microsoft.VisualBasic.Interaction.InputBox("Please enter value for Day " + Convert.ToString(day + 1) + " in week " + Convert.ToString(week + 1) + "."); 
    } 
} 


//then, print the output line by line by looping through the toys array 
//the first line must be separate because the headings are not part of the array 
txtOutput.Text += "Mon" + "\t" + "Tue" + "\t" + "Wed" + "\t" + "Thu" + "\t" + "Fri" + "\t" + "\r\n"; 

for (int week = 0; week <= 3; week++)//foreach week 
{ 
    //construct the line of text which represents the week's data 
    txtOutput.Text += "\tWeek " + (week+1) + "\t"; 
    for (int day = 0; day <= 4; day++) 
    { 
     txtOutput.Text += toys[day,week]; 
     if(day != 4) 
     { 
     //so long as it is not the last day, then you have to tab over 
     txtOutput.Text += "\t"; 
     } 
    } 

    //wrap things up by moving to the next line before you iterate to the next line 
    txtOutput.Text += "\r\n"; 
} 
+0

Мне нравится этот подход. Кажется логичным. Хотя он говорит, что эта часть не работает. txtOutput.Text + = игрушки [неделя, день]; –

+0

какая ошибка вы получаете? – AGB

+0

Nevermind ... Думаю, я переключил ваши индексы на массив игрушек. См. Отредактированный код, который должен был устранить проблему. – AGB

1

просто идейка, вам лучше INIT названия (например, "Mon", "Вт" .. и т.д ..) в массив, как этот

string[,] toys = new string[,] 
{ 
    {" ","Mon", "Tue", "Wed", "Thu", "Fri"}, 
    {"Week 1", "0", "0", "0", "0", "0"}, 
    {"Week 2", "0", "0", "0", "0", "0"}, 
    {"Week 3", "0", "0", "0", "0", "0"}, 
    {"Week 4", "0", "0", "0", "0", "0"} 
}; 

и

toys[week + 1, day + 1] = Microsoft.VisualBasic.Interaction.InputBox(... 

и при выводе используйте GetLenght() cause toys [,] - это двумерный массив.

for (int i = 0; i < toys.GetLength(0); i++) 
{ 
    for (int j = 0; j < toys.GetLength(1); j++) 
    { 
     this.textBox1.Text += toys[i, j] + "\t"; 
    } 
    this.textBox1.Text += "\r\n"; 
} 

результат http://i.stack.imgur.com/LZu7u.jpg

+0

Этот способ кажется еще большим кодом? Для этой части: игрушки [неделя + 1, день + 1] = Microsoft.VisualBasic.Interaction.InputBox (... Мне нужно было вставить это как для каждого дня недели? Или зацикливать его? –

+0

yep, я потерял код, похожий на ваш. – Rwing

+0

toys [day + 1, week + 1] = Microsoft .VisualBasic.Interaction.InputBox («Введите значение для дня» + Convert.ToString (день + 1) + «в неделю» + Convert.ToString (неделя + 1) + «.»); – Rwing

0

Проверьте мой способ сделать это. Я просто прочитал ваше сообщение, так что да ... Возможно, это тоже поможет в будущем ... Это самое короткое, о котором я мог подумать :)

TextBox1.Text = "\t" + "Mon" + "\t" + "Tues" + "\t" + "Weds" + "\t" + "Thurs" + "\t" + "Fri"; 
for (int week = 0; week <= 3; week++) 
    { 
    TextBox1.Text += Environment.NewLine + "Week " + Convert.ToString(week + 1) + "\t"; 
    for (int day = 0; day <= 4; day++) 
     { 
     TextBox1.Text += toys[day, week] + "\t"; 
     } 
    } 
Смежные вопросы