我試圖找到我可以在我的程序中使用圖像的下拉式列表。它只需要在網格中顯示一些圖片,併爲每個圖片提供工具提示,並且我需要能夠獲取上次挑選的圖片。例如(沒有在它的標籤欄):下拉圖像列表
不幸的是我的貨幣預算是零,這意味着我不能購買任何控制。有沒有這樣的自由人,還是我需要努力製作自己的作品?
如果答案是後者,是否有任何有用的鏈接,你也許能夠給我,使我開始對這個控制工作?
我試圖找到我可以在我的程序中使用圖像的下拉式列表。它只需要在網格中顯示一些圖片,併爲每個圖片提供工具提示,並且我需要能夠獲取上次挑選的圖片。例如(沒有在它的標籤欄):下拉圖像列表
不幸的是我的貨幣預算是零,這意味着我不能購買任何控制。有沒有這樣的自由人,還是我需要努力製作自己的作品?
如果答案是後者,是否有任何有用的鏈接,你也許能夠給我,使我開始對這個控制工作?
您可以從System.Windows.Forms.ComboBox
繼承您的類並覆蓋保護的方法OnDrawItem(DrawItemEventArgs e)
示例代碼:
public class ImageComboBox : ComboBox
{
protected override void OnDrawItem(DrawItemEventArgs e)
{
// Get the item.
var item = this.Items[e.Index] as string;
if(item == null)
return;
// Get the coordinates to where to draw the image.
int imageX = e.Bounds.X + 5;
int imageY = (e.Bounds.Height - image.Height)/2;
// Draw image
e.Graphics.DrawImage(image, new Point(imageX, imageY));
// Draw text
e.Graphics.DrawString(item, this.Font, new SolidBrush(Color.Black),
new PointF(textX, textY);
}
}
上面的代碼只是一個快速和骯髒的例子,不應該作爲它(不應該例如創建一個新SolidBrush每個項被拉出時),但我希望它會給你如何做到這一點的想法。
有自定義圖像下拉列表中的許多實現在那裏。
你應該看看ComboBox
的DrawMode
財產。
下面是實現使用一個ImageList
的,由OnDrawItem
從ComboBox
繼承,設置DrawMode
到OwnerDrawFixed
和繪製它的元素一個簡單的例子:
我不知道,如果這種方法使您能夠實現您提到的網格式圖像列表,但請看一下示例 - 我確定它恰好適合您的需求。
offtopic:使用WPF,而不是將極大地緩解問題 – 2009-08-17 07:40:32