Surely there has to be many ways to optimize the following code, where I basically have to make sure that a lot of textboxes aren’t empty and then read their values:
if (foo1.Text.Length != 0 & bar1.Text.Length != 0) { output.Text += myStrings[i] + ' / ' + foo1.Text + ' / ' + bar1.Text; } if (foo2.Text.Length != 0 & bar2.Text.Length != 0) { output.Text += myStrings[i] + ' / ' + foo2.Text + ' / ' + bar2.Text; } if (foo3.Text.Length != 0 & bar3.Text.Length != 0) { output.Text += myStrings[i] + ' / ' + foo3.Text + ' / ' + bar3.Text; } if (foo4.Text.Length != 0 & bar4.Text.Length != 0) { output.Text += myStrings[i] + ' / ' + foo4.Text + ' / ' + bar4.Text; } if (foo5.Text.Length != 0 & bar5.Text.Length != 0) { output.Text += myStrings[i] + ' / ' + foo5.Text + ' / ' + bar5.Text; } if (foo6.Text.Length != 0 & bar6.Text.Length != 0) output.Text += myStrings[i] + ' / ' + foo6.Text + ' / ' + bar6.Text; if (foo7.Text.Length != 0 & bar7.Text.Length != 0) { output.Text += myStrings[i] + ' / ' + foo7.Text + ' / ' + bar7.Text; } if (foo8.Text.Length != 0 & bar8.Text.Length != 0) { output.Text += myStrings[i] + ' / ' + foo8.Text + ' / ' + bar8.Text; } if (foo9.Text.Length != 0 & bar9.Text.Length != 0) { output.Text += myStrings[i] + ' / ' + foo9.Text + ' / ' + bar9.Text; } if (foo10.Text.Length != 0 & bar10.Text.Length != 0) { output.Text += myStrings[i] + ' / ' + foo10.Text + ' / ' + bar10.Text; }
I would put the repeated elements in arrays and then loop over them.
Of course, if the elements are really named sequentially you can fill the arrays by looking up the controls from the form’s Controls collection, with the name ‘foo’ + number.ToString().