2013-06-26 4 views
0

Я читаю текстовый файл и пытаюсь создать текстовое поле в том же макете, что и текстовый файл. Но когда я попытался закодировать его на основе того, что я знаю (я новичок в этом), текстовое поле исчезло. Например, в моем тексте файла, он читает:C# Аранжировка текстового поля в текстовом файле

H, E, L, L, O,

E,,,,,

Y,,,,,

Я хочу, чтобы текстовое поле создавалось в соответствии с вышеприведенным форматом, появляется текстовое поле, где находятся буквы, тогда пробелы также являются текстовыми полями, но я устанавливаю их видимость в скрытое, однако это не работает с работой, которую я думал. В основном мне нужен текстовый блок 5x5 layout, такой как текстовый файл, и те, у кого буквы будут отображаться в текстовом поле, будут истинными, а те, у которых пустой, будут скрыты свои текстовые поля.

Он оказывается чем-то вроде этого:

enter image description here

Вот мой код, который я пробовал:

using (StreamReader reader = File.OpenText(Server.MapPath(@daoWordPuzzle.GetfileURL()))) 
{ 
    string line; 
    while((line =reader.ReadLine()) !=null)    
    { 
     // Response.Write(line + " <br />"); // Read every line in text file. 
     string[] lol = line.Split(new string[] {","}, StringSplitOptions.None); 

     foreach (var value in lol) 
     { 
      int i = 0; 
      TextBox tb = new TextBox(); 
      tb.MaxLength = (1); 
      tb.Width = Unit.Pixel(40); 
      tb.Height = Unit.Pixel(40); 
      tb.ID = i.ToString(); 

      // Response.Write(value); 
      if (string.IsNullOrEmpty(value)) 
      { 
       tb.Style["visibility"] = "hidden"; 
      } 
      if (!string.IsNullOrEmpty(value)) 
      { 
       tb.Text = ""; 
      } 
      Panel1.Controls.Add(tb); 
      i++; 
     } 
    } 
} 

Я попытался петлю, и если текстовое поле достигнет 10 I сделать это, но это не помогает Код:

foreach (var value in lol) 
{ 
    int i = 0; 
    int k = 0; 
    TextBox tb = new TextBox(); 
    tb.MaxLength = (1); 
    tb.Width = Unit.Pixel(40); 
    tb.Height = Unit.Pixel(40); 
    tb.ID = i.ToString(); 

    // Response.Write(value); 
    if (string.IsNullOrEmpty(value)) 
    { 
     tb.Style["visibility"] = "hidden"; 
    } 
    if (!string.IsNullOrEmpty(value)) 
    { 
     tb.Text = ""; 
    } 
    if (k > 9) 
    { 
     Panel1.Controls.Add(new LiteralControl("<br/>")); 
     Panel1.Controls.Add(tb); 
     k = 0; 
    } 
    if (k < 9) 
    { 
     Panel1.Controls.Add(tb); 
    } 

    k++; 
    i++; 
} 
+0

[Scrabble] (http://en.wikipedia.org/wiki/Scrabble)? –

ответ

0

Вам следует попробовать добавить и установить .Left и .Top и хранить переменные,

Это возможный метод.

Это работает, протестировано и работает.

int leftStart = 0; 
int topStart = 0; 

using (StreamReader reader = File.OpenText(@"C:\\hello.txt")) 
{ 
    string line; 
    while ((line = reader.ReadLine()) != null) 
    { 
     // Response.Write(line + " <br />"); // Read every line in text file. 
     string[] lol = line.Split(new string[] { "," }, StringSplitOptions.None); 

     foreach (var value in lol) 
     { 
      int i = 0; 
      TextBox tb = new TextBox(); 
      tb.MaxLength = (1); 
      tb.Width = 40; 
      tb.Height = 40; 
      tb.Left = leftStart; 
      tb.Top = topStart; 
      tb.Visible = true; 

      // Response.Write(value); 
      if (string.IsNullOrEmpty(value)) 
      { 
       //tb.Style["visibility"] = "hidden"; 
       tb.Visible = false; 
      } 
      if (!string.IsNullOrEmpty(value)) 
      { 
       tb.Text = ""; 
      } 

      panel1.Controls.Add(tb); 
      i++; 
      leftStart = leftStart + 50; 
     } 
     topStart = topStart + 50; 
     leftStart = 0; 

    } 
} 

hello.txt содержит:

Н, Е, L, L, О,

Е ,,,,,

У ,,,,,

+0

привет, спасибо за ваши усилия и время, но нет определения для Left и TopStart, есть ли там пространство имён? – user2376998

+0

Я редактировал код. Текстовые поля в C# действительно используют .Left и .Top, они используются для размещения элемента в форме. – TheCryptKeeper

+0

Я полагаю, что текстовые поля OPs могут отсутствовать и сверху, если они являются System.Web.UI.WebControls.TextBoxes, как намекнул OP, также добавляя LiteralControl («
») в свой второй блок кода. – Matt