[問題] 關於ListBox的文字本體與背景變色問題
目前我大概有先google一下,大多網路作法是使用Drawitem的方式下去做,這個
方式的確可以變色,先貼我google到的程式碼。
private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.Add("红色");
listBox1.Items.Add("黄色");
listBox1.Items.Add("蓝色");
listBox1.DrawMode = DrawMode.OwnerDrawFixed; // 属性里设置
}
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
Color vColor = e.ForeColor;
switch (e.Index)
{
case 0: vColor = Color.Red; break;
case 1: vColor = Color.Yellow; break;
case 2: vColor = Color.Blue; break;
}
e.Graphics.FillRectangle(new SolidBrush(vColor), e.Bounds);
e.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(), e.Font,
new SolidBrush(e.ForeColor), e.Bounds);
e.DrawFocusRectangle();
}
這個方法是預先在Drawitem裡指定好第n個item的顏色
但是假設如果我的程式設計item是自己由textbox輸入新增到listbox裡,而且連顏色
都是自己設定下去,例如透過color.Dialog來選擇(知道顏色碼還要轉換一次)
此時我發現我好像卡關了,不知該怎麼下手.....
因為兩個部分,今天自自己新增文字、自己選擇文字顏色到listbox內,那麼我就
無法預先知道我會設定什麼顏色(菜鳥的我目前顏色只有想到用全域變數來解決顏
色問題),但最大問題在於,使用者會輸入幾個item到listbox,我無法知道,因
此在Drawitem裡的switch case就不知道該怎麼怎麼設定數量
另外的小問題,Drawitem是不是只要有item新增進去時,其實他是整個ListBox都重繪?
是的話,如果現有50個item,我要在新增一個item進去的話,是不是我還得先記下來
舊有50個item的顏色,然後重繪時候在一個一個指定回去?
請大家指點一下大略方向
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 124.218.10.149
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1425030244.A.BF3.html
→
02/27 22:23, , 1F
02/27 22:23, 1F
→
02/27 23:42, , 2F
02/27 23:42, 2F
→
02/27 23:44, , 3F
02/27 23:44, 3F
推
03/03 15:47, , 4F
03/03 15:47, 4F
推
03/03 15:53, , 5F
03/03 15:53, 5F
→
03/03 15:53, , 6F
03/03 15:53, 6F
→
03/03 15:53, , 7F
03/03 15:53, 7F
推
03/03 16:04, , 8F
03/03 16:04, 8F
→
03/03 16:05, , 9F
03/03 16:05, 9F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):