一)C#遍曆容器中的控制項
代碼1:
private List<Control> find(Control c, Type t) //c 為容器控制項, t 為所選類型
{
List<Control> controls = new List<Control>();
foreach (Control cc in c.Controls)
{
if (cc.GetType() == t)
controls.Add(cc);
}
return controls;
}
代碼2:
public List<TextBox> getTextBoxList()
{
try
{
List<TextBox> lstText = new List<TextBox>();
IEnumerator ier = this.panel1.Controls.GetEnumerator();
while (ier.MoveNext())
{
if (ier.Current is TextBox)
{
TextBox a = ier.Current as TextBox;
lstText.Add(a);
}
}
return lstText;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
return null;
}
二)c#中如何得到一個文本串的寬度(以像素px為單位)
.NET 的 System.Drawing 空間中,Graphics 對象提供了能達到此目的的方法:MeasureString() public void PrintOutBox(string printStr,int printWidth,string printAlingment,System.Windows.Forms.PaintEventArgs g)
{
int x1 = CurrentX;
int y1= CurrentY;
int t_space=2;
SizeF sf=g.MeasureString(printStr,printFont());// printFont()為傳回型別為Font的方法 Rectangle rec1 = new Rectangle(CurrentX, CurrentY, printWidth, (int)(sf.Height + t_space));
g.DrawRectangle(Pens.Black,rec1);
if (printAlingment == "r" | printAlingment == "R")
{
CurrentX = x1 + printWidth - (int)sf.Width;
CurrentY = y1 + (t_space / 2);
}
g.DrawString(printStr, printFont(), Brushes.Black, CurrentX, CurrentY);
}