[英]for-loop call textbox.text with variable inside the name
如何在for循環中使用“ I”變量調用textbox.text? 我有13個文本框,並且做相同的事情正好13次(請參閱我的源代碼)。 如何使用for循環更簡單? TempRechnung.ReplaceText("{1_ANR}", "txtArtikel_" + i + "_Nr.Text");
實際上不起作用...
我當前的源代碼:
// #1
if (txtArtikel_1_Epreis.Text != string.Empty)
{
decimal Artikel_1_GP = Convert.ToDecimal(txtArtikel_1_Epreis.Text) * Convert.ToInt32(txtArtikel_1_Menge.Text);
decimal Artikel_1_EP = Convert.ToDecimal(txtArtikel_1_Epreis.Text);
TempRechnung.ReplaceText("{1_ANR}", txtArtikel_1_Nr.Text);
TempRechnung.ReplaceText("{1_BEZ}", txtArtikel_1_Bez.Text);
TempRechnung.ReplaceText("{1_ME}", txtArtikel_1_Menge.Text);
TempRechnung.ReplaceText("{1_EP}", Artikel_1_EP.ToString("C"));
TempRechnung.ReplaceText("{1_GP}", Artikel_1_GP.ToString("C"));
}
else
{
TempRechnung.ReplaceText("{2_ANR}", "");
TempRechnung.ReplaceText("{2_BEZ}", "");
TempRechnung.ReplaceText("{2_ME}", "");
TempRechnung.ReplaceText("{2_EP}", "");
TempRechnung.ReplaceText("{2_GP}", "");
}
// #2
if (txtArtikel_2_Epreis.Text != string.Empty)
{
decimal Artikel_2_GP = Convert.ToDecimal(txtArtikel_2_Epreis.Text) * Convert.ToInt32(txtArtikel_2_Menge.Text);
decimal Artikel_2_EP = Convert.ToDecimal(txtArtikel_2_Epreis.Text);
TempRechnung.ReplaceText("{2_ANR}", txtArtikel_2_Nr.Text);
TempRechnung.ReplaceText("{2_BEZ}", txtArtikel_2_Bez.Text);
TempRechnung.ReplaceText("{2_ME}", txtArtikel_2_Menge.Text);
TempRechnung.ReplaceText("{2_EP}", Artikel_2_EP.ToString("C"));
TempRechnung.ReplaceText("{2_GP}", Artikel_2_GP.ToString("C"));
}
else
{
TempRechnung.ReplaceText("{2_ANR}", "");
TempRechnung.ReplaceText("{2_BEZ}", "");
TempRechnung.ReplaceText("{2_ME}", "");
TempRechnung.ReplaceText("{2_EP}", "");
TempRechnung.ReplaceText("{2_GP}", "");
}
我建議創建Artikel
用戶控件,其中將包含以下文本框: Epreis
, Nr
, Bez
和Menge
。 然后將這些用戶控件中的13個放在您的窗體上並循環。 您可以手動創建artikel控件的集合,也可以查詢它們:
var artikels = Controls.OfType<ArtikelControl>();
這是ArtikelControl的WinForms示例:
public partial class ArtikelControl : UserControl
{
public ArtikelControl()
{
InitializeComponent();
}
public decimal GP
{
get { return Decimal.Parse(epreisTextBox.Text) *
Int32.Parse(mengeTextBox.Text); } // add validation
}
public decimal EP { get { return Decimal.Parse(epreisTextBox.Text); } }
public string Nr { get { return nrTextBox.Text; } }
public string Bez { get { return bezTextBox.Text; } }
public string Menge { get { return mengeTextBox.Text; } }
public bool HasEpreis
{
get { return !String.IsNullOrEmpty(epreisTextBox.Text); }
}
}
現在,如果您擁有這些控件的集合,則可以循環它並從每個控件中獲取值:
foreach(var artikel in artikels)
{
if (artikel.HasEpreis)
{
TempRechnung.ReplaceText("{2_ANR}", artikel.Nr);
TempRechnung.ReplaceText("{2_BEZ}", artikel.Bez);
// ...
}
else
{
// ...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.