Is it possible to change the border color of a toolstrip menu dropdown list.
Yes. Một lớp học mà được thừa hưởng từ ProfessionalColorTable
tác phẩm như mong đợi:
class MenuColorTable : ProfessionalColorTable
{
public MenuColorTable()
{
// see notes
base.UseSystemColors = false;
}
public override System.Drawing.Color MenuBorder
{
get{return Color.Fuchsia;}
}
public override System.Drawing.Color MenuItemBorder
{
get{return Color.DarkViolet;}
}
public override Color MenuItemSelected
{
get { return Color.Cornsilk;}
}
public override Color MenuItemSelectedGradientBegin
{
get{return Color.LawnGreen;}
}
public override Color MenuItemSelectedGradientEnd
{
get { return Color.MediumSeaGreen; }
}
public override Color MenuStripGradientBegin
{
get { return Color.AliceBlue; }
}
public override Color MenuStripGradientEnd
{
get { return Color.DodgerBlue; }
}
}
Ở dạng tải:
menuStrip1.Renderer = new ToolStripProfessionalRenderer(new MenuColorTable());
Nếu visual styles không bật, không phải tất cả các mục bảng màu sẽ được sử dụng và một số SystemColors
sẽ được sử dụng thay thế. Bạn kích hoạt visual styles trong Main()
:
// must be done before any UI elements are used
Application.EnableVisualStyles();
Bạn có thể muốn cũng vô hiệu hóa hệ thống màu sắc như trong ctor. Giá trị mặc định sẽ là false cho dù kiểu trực quan có được bật hay không, nhưng có thể một số thứ khác đã thay đổi nó?
base.UseSystemColors = false;
Cả EnableVisualStyles()
và UseSystemColors = false;
phải tại chỗ cho tất cả các yếu tố đang hiển thị trong bảng màu của bạn sẽ được thực hiện, nếu không chỉ có một số được sử dụng. (Mặc dù, MenuBorder
dường như làm việc không có vấn đề gì.) Nếu không, kết quả như mong đợi:
Gradient đơn đi từ AliceBlue để DodgerBlue; một mục bằng chuột trên nó sử dụng một gradient từ trên xuống dưới của LawnGreen đến MediumSeaGreen (chuột không được hiển thị).
Khi mở, biên giới đơn là Fuschia (mmmm, nhẹ nhàng!)
Với chuột lên một trong các mục (chuột không hiển thị), mục sử dụng MenuItemSelected
màu là Consilk.
Nếu bạn gặp khó khăn khi ghi đè công việc của mình, hãy kiểm tra xem bạn có đang sử dụng đúng hay không (nghĩa là tên của chúng ngụ ý, một số thì gây hiểu lầm lúc đầu).
Bạn cũng có thể kiểm tra xem bạn đang sử dụng một MenuStrip
cho trình đơn không, Net có lớp trình đơn cũ hơn khác mặc dù bạn phải tìm kiếm để tìm nó. Bạn cũng có thể thay đổi hoặc vô hiệu hóa bất kỳ Chủ đề nào để xem điều đó có thể gây ra các hiệu ứng bất lợi hay không.
Bạn đang tìm kiếm những câu hỏi này: http://stackoverflow.com/questions/13235627/how-to-change-the-appearance-of-a-menustrip? –
Hmm, có thể trùng lặp. Nhưng tôi vẫn không biết những gì tài sản để ghi đè lên để có được hiệu quả mong muốn. Tôi đã thử MenuItemBorder và MenuBorder nhưng nó không thay đổi. –
Để thay đổi màu đường viền, đủ để làm theo giải pháp @Plutonix được mô tả trong câu trả lời được chấp nhận. Nhưng để loại bỏ đường viền màu trắng đó giữa đường viền của mục và menu, hãy xem xét sau một trong các giải pháp mà tôi đã mô tả. –