[英]C# Form Controls
我有一個包含許多名為pb_a1,pb_a2,pb_a3 ...等圖片框的表單。
我有一個包含圖片框名稱的String數組。 我需要做的是訪問其中的每一個並為其指定圖像。 而不是硬編碼,我想知道是否有任何方法可以編寫一個循環,它給我命令
> Form1.pb_a1.Image=<some Image>; > > Form1.pb_a2.Image=<some Image>; > > Form1.pb_a3.Image=<some Image>; > > Form1.pb_a4.Image=<some Image>;
你可以在窗體Controls
屬性上使用ControlCollection.Find()方法嗎?
如果您只有圖片控件的名稱而不是對它們的引用(我認為您可以在表單中先前創建這些控件時將其保存在帶有名稱和引用的字典中...),這是您擁有的唯一方法我想是在Form.Controls集合中搜索,直到找到具有您正在尋找的名稱的那個,以及哪個是圖片框類型。
最好將圖片框存儲在圖片框數組中,而不是字符串數組。
PictureBox[] myPictures = {pictureBox1, pictureBox2, pictureBox3, pictureBox4};
foreach (PictureBox picture in myPictures)
{
picture.Image = <some Image>;
}
如果您必須將其作為字符串,以下代碼可能會幫助您。 請注意,我沒有包含任何錯誤檢查,因為該元素不存在。 你可能只是在數組的那一部分得到一個空元素。 您也可以將其包含在try / catch中。
string[] myPicturesString = {"pictureBox1", "pictureBox2", "pictureBox3", "pictureBox4"};
PictureBox[] myPictures = new PictureBox[myPicturesString.Length];
for (int i = 0; i < myPictures.Length; i++)
{
foreach (Control c in this.Controls)
{
if (c.Name == myPicturesString[i])
{
myPictures[i] = (PictureBox) c;
}
}
}
MessageBox.Show(myPictures[1].Name);
假設這些圖片框是表單的字段,您可以在表單類上反映(System.Reflection),檢索對圖片框字段的引用並將它們存儲到字典中。 在表單創建期間(在InitializeComponent之后)執行此操作。
下次您必須按名稱訪問圖片框時,只需使用:
myDictionary["pictureboxname"].Image = blabla;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.