各位老師,如果我有textBox1~textBox10,總共10個textBox。分別讓textBox [i].text=i,該如何表示?用textBox1.Text=1,textBox2.Text=2有點太低級了。在網上查,好像有種語法FindControl可以達到類似功能,但我的VS2019沒有這個FindControl,不知道什么原因。
以前再VBA中用”textbox” & i可以遍歷,但這方法好像在C#上應用不了。
不知道有什么好辦法。
uj5u.com熱心網友回復:
有個Name屬性的,通過Name對應相應的值。或者事先這些TextBox按順序放到一個陣列里邊,陣列取控制元件賦值。uj5u.com熱心網友回復:
1)、可以創建一個陣列,先把這10個textBox保存到陣列里面,然后遍歷陣列,類似如下:TextBox[] myTextBox = new TextBox[10];
myTextBox[0] = textBox1;
myTextBox[1] = textBox2;
myTextBox[2] = textBox3;
myTextBox[3] = textBox4;
myTextBox[4] = textBox5;
//。。。。
for ( int i=0;i< 10;i++)
{
myTextBox[i].Text = (i+1).toString();
}
}
2、因為表單里的控制元件,都被包括在表單的Control里面,可以遍歷Control:
foreach(Control myControls in this.Controls)
{
if (myControls.ToString().IndexOf("TextBox") > 0 )
{
myControls.Text = (i+1).toString();
}
}
uj5u.com熱心網友回復:
for (int i = 1; i <= 10; i++)(this.Controls["textBox" + i.ToString()] as TextBox).Text = i.ToString();
uj5u.com熱心網友回復:
foreach 所有子控制元件(如表單frm.Controls) 判斷是否為textbox,在判斷name,在賦值。。。。不過怎么感覺其實與.text=1差不鳥多少。。
foreach (var c in this.Controls)
{
if (c is TextBox t)
{
switch (t.Name)
{
case "textBox1":
t.Text = "1";
break;
case "textBox2":
t.Text = "2";
break;
}
}
}
uj5u.com熱心網友回復:
搞一個List<TextBox>物件 叫做TextBoxList,將其他物件按順序添加進來,然后for回圈賦值操作.如果是搞計算器,建議別這樣繞自己了,用vs界面設計器填寫完就好了,只有10個,手動填寫并不低級,因為你后續不需要管理或者再次操作.
uj5u.com熱心網友回復:
Control.FindControl 吧,你在表單 中用this.FindControl 試試uj5u.com熱心網友回復:
為啥怎么說都不聽呢?太低級
任何老板付工資都是讓你解決問題的,不是讓你各種“高級”的,我已經強調在強調,先學邏輯,邏輯優先,思維優先。那些“高級”,那些“技巧”讓博客園那些人玩去,這里沒有高級,沒有技巧。只有問題和解決問題
so,你的問題,對我們是問題,所以我們解決。sp 15年前已經解過,請百度“sp1234 重量級查詢控制元件”-------------嘿嘿,看看sp1234寫的是什么?重量級也就是告訴你們他思維上,邏輯上比較有分量,使用同樣有分量,小心用,很重的
ps:做專案解決問題,不是讓你展示高級。想高級,沒問題。自己去刷leecode,別在專案啥刷怪打野
uj5u.com熱心網友回復:
邏輯優先比如我不想來回賦值,所以出現了mvvm和binding
比如你上個帖子說的,我想讓他自己生成,so,出現了模板引擎。對你這個東西依然可以用模板引擎,vs說我自己就支持T4模板直接生成cs編譯啊。同樣模板引擎生成 C#字串,emit 動態運行也沒問題
換另一個角度,sp說 controls.controls-------------------.contorls, 這不就是你的treeview么(nodes.nodes.nodes)treeview你會那么做,這個為啥不可以
uj5u.com熱心網友回復:
foreach(Control myControls in this.Controls)uj5u.com熱心網友回復:
那就首先要動態創建 多個TextBox控制元件,起的名字要有規律, 這樣就可以在程式化下執行uj5u.com熱心網友回復:
給你看一段我的代碼,引數可以是當前Form , 參考吧
/// <summary>
/// 清除控制元件上所有需要輸入控制元件的值
/// </summary>
/// <param name="control"></param>
public static void ClearControlText(Control control)
{
foreach (Control Contrl in control.Controls)
{
if ((Contrl is LabelControl) || (Contrl is SimpleButton)||(Contrl is Label) )
continue;
else if (Contrl is CheckEdit)
{
CheckEdit check = Contrl as CheckEdit;
check.Checked = false;
}
else if (Contrl is LookUpEdit)
{
LookUpEdit lookUp = Contrl as LookUpEdit;
lookUp.EditValue = null;
}
else
Contrl.Text = "";
}
}
uj5u.com熱心網友回復:
你可以把多個textbox放在一個容器上,如panel,然后就可以動態遍歷了。如果需要相關原碼可以找我。uj5u.com熱心網友回復:
好厲害的樣子uj5u.com熱心網友回復:
在容器里遍歷然后 if obj as textbox todo
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/13028.html
標籤:C#
上一篇:C# ASP.NET 如何更新(修改)資料庫最后一條記錄的某個欄位的值
下一篇:怎么變成中文顯示問題
