PDA

View Full Version : آیکون ToolStripControlHost نشون داده نمیشه



نیکناز
شنبه 11 مرداد 1393, 07:45 صبح
سلام دوستان
من می خوام یک buttton رو به عنوان آیتم context menustrip ، قرار بدم . البته می خوام آیکون هم داشته باشه.
یه چیز مثل این :
121882
اما میشه مثل این :

121883

یعنی آیکونش نشون نمی ده .

کدی که نوشتم :


public class ContexMenuStrip2 : ContextMenuStrip
{




protected override void OnPaint(PaintEventArgs e)
{
for (int i = 0; i < this.Items.Count; i++)
{


try
{
if ((this.Items[i].Image != null) && (this.Items[i].GetType().BaseType == typeof(System.Windows.Forms.ToolStripControlHost)) )
{
float x = 150;
float y = this.Items[i].Bounds.Y + ((this.Items[i].Bounds.Height / 2) - 20);
e.Graphics.DrawImage(Items[i].Image, x, y);
}
}
catch { }
}
base.OnPaint(e);
}
}


private void Form1_Load(object sender, EventArgs e)
{


ContexMenuStrip2 Menu = new ContexMenuStrip2();




Button btn = new Button();
btn.BackColor = Color.Pink;




ToolStripControlHost backcolorItem = new ToolStripControlHost(btn);
backcolorItem.BackgroundImageLayout = ImageLayout.None;
backcolorItem.Image = Image.FromFile(Application.StartupPath + "\\30.png");
backcolorItem.Width = 120;




backcolorItem.Name = "BgColor";
Menu.Items.Add(backcolorItem);



this.ContextMenuStrip = Menu;
}

plus
شنبه 11 مرداد 1393, 15:49 عصر
کلاس ToolStripControlHost صرفا بخاطر اینکه از کلاس ToolStripItem ارث بری کرده این Property رو داره وگرنه Image رو پشتیبانی نمیکنه.
شاید بهتر باشه شما از یک Container مثل Panel داخل ToolStripControlHost استفاده کنید و یک Button و یک Image داخل اون Panel بگذارین.