2013-05-28 3 views
0

Я пытаюсь отобразить сетку 5x5 текстовых полей внутри панели. После нажатия Show пустые текстовые поля будут пустыми (visible: false;), а непустые будут отображаться в их соответствующих положениях.C# текстовое поле в панели visiblity

Мой текущий файл .aspx:

<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:Panel ID="Panel1" runat="server"> 
     </asp:Panel> 
    </div> 
    <asp:Button ID="btnShow" runat="server" Text="Show" onclick="btnShow_Click" /> 
    </form> 
</body> 

Код За:

protected void Page_Load(object sender, EventArgs e) 
{ 
    //Declare the array 
    //int[,] wsArray = new int[5, 5]; 
    //char[] delimiterChars = { ' ', ' ', ' ' }; 

    StringWriter stringWriter = new StringWriter(); 

    // Put HtmlTextWriter in using block because it needs to call Dispose. 
    using (HtmlTextWriter hw = new HtmlTextWriter(stringWriter)) 
    { 
     int number = 1; 
     //hw.Write("<table>"); 
     for (int i = 0; i <= 4; i++) 
     { 
      //hw.Write("<tr>"); 
      for (int j = 0; j <= 4; j++) 
      { 
       System.Random rnd = new Random(); 
       TextBox tb = new TextBox(); 
       tb.ID = number.ToString(); 
       tb.MaxLength = 1; 
       tb.Width = Unit.Pixel(40); 
       tb.Height = Unit.Pixel(40); 
       Panel1.Controls.Add(tb); 

       number++;      
      } 
      Literal lc = new Literal(); 
      lc.Text = "<br />"; 
      Panel1.Controls.Add(lc); 
     } 
    } 
} 
protected void btnShow_Click(object sender, EventArgs e) 
{ 
    foreach (Control text in Panel1.Controls) 
    { 
     if (text == null) 
     { 
      text.Visible = false; 
     } 
     else 
     { 
      text.Visible = true; 
     } 
    } 
} 
+0

вы имеете в виду TextBox.Text нулевой или пустой? Если да, попробуйте string.IsNullOrEmpty (text.Text) – ducmami

+0

И почему вы объявляете экземпляр System.Random, который вы не используете? Также вы не должны объявлять его в цикле. – Bauss

+0

привет, извините, если мои коды грязные, потому что этот код используется в других приложениях, которые имеют схожие понятия, что то, что я делаю, забыл его очистить. Извините =) – user2376998

ответ

1

Вы должны получить текстовое поле первым; затем проверить его Text property.Try это внутри обработчика кнопки, btnShow_Click():

foreach (Control control in Panel1.Controls) 
{ 
    var textBox = control as TextBox; 
    if (textBox != null) 
    { 
     textBox.Visible = !string.IsNullOrEmpty(textBox.Text); 
    } 
} 

Кстати, если вы установите Visible=False с серверными макет сайта может (не может) перерыв в качестве контроля не будет быть оказанным вообще. В этом случае заменить эту строку: textBox.Visible = !string.IsNullOrEmpty(textBox.Text); со следующим:

if (string.IsNullOrEmpty(textBox.Text)) 
{ 
    textBox.Style["visibility"] = "hidden"; 
} 
+0

привет, спасибо за быстрый ответ, он работает, человек действительно ценит его, но выравнивания нет. что я хотел. потому что я делаю текстовые поля сетки 5x5 в панели. поэтому, когда остальные отображаемые нулевые текстовые поля становятся ложными, мне нужны те текстовые поля, которые не имеют значения null, чтобы оставаться в его текущем положении, пока что все смещается, чтобы выровнять слева. i duno, если вы понимаете, что я говорю (извините за мой плохой английский), я новичок в stackoverflow, не знаю, возможно ли опубликовать скриншот в комментарии, чтобы вы поняли лучше. – user2376998

+0

Хорошо, проверьте обновленный ответ; это должно сохранить схему сетки (если я не понял) – mshsayem

+0

nice bro, thanks x1000 – user2376998

Смежные вопросы