2013-06-26 46 views
0

我正在從textfile中讀取數據,並試圖在與textfile相同的佈局中創建文本框。但是當我試圖根據我所知道的(我對此是新的)進行編碼時,文本框已經不合時宜了。 例如,在我的文本文件,其內容如下:C#按文本文件的順序排列文本框

H,E,L,L,O,

E,,,,,

Y,,,,,

我想要根據上面的格式創建文本框,文本框將出現在字母的位置,然後空白也只是文本框,但我設置他們的隱藏的可見性,但它不工作,我的工作,我思想。基本上我需要一個像文本文件一樣的5x5佈局文本框,而那些帶有字母的文本框的文本框可見可見,空白的文本框將隱藏它們的文本框。

它變成是這樣的:

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的包含:

H,E,L,L,O,

Ë,,,,,

ý,,,,,

+0

您好,感謝您的努力和時間,但是Left和TopStart沒有定義,是否有任何命名空間? – user2376998

+0

我編輯了代碼。在C#中的文本框的確使用.Left和.Top它用於在表單上定位元素。 – TheCryptKeeper

+0

我想象的OP文本框可能沒有左和頂,如果他們是System.Web.UI.WebControls.TextBoxes,由OP暗示在他的第二個代碼塊中添加LiteralControl(「
」)。 – Matt