Tôi đang làm việc trên một ứng dụng Windows Form (C#, .NET 4.0, VS 2010), nơi tôi có một MainForm khá chuẩn với một ToolStrip (GripStyle: Hidden, Dock: Top, RenderMode: ManagerRenderMode). Toolstrip chứa một vài mục cơ bản (ToolStripLabel, ToolStripSeparator, ToolStripSplitButton).ToolStrip Rounded Corners
này được trả lại như sau:
Lúc đầu, tôi chỉ đơn giản là muốn thêm một biên giới 'đáy' dưới toolstrip, nhưng tôi cũng nhận thấy rằng toolstrip này được trả lại với 'góc tròn' (bạn có thể thấy phần trên cùng và dưới cùng bên phải trong hình ảnh) và một đường thẳng đứng.
Làm cách nào để làm cho các góc này KHÔNG được làm tròn?
tôi đã cố gắng:
public class MainFormToolStripRenderer : ToolStripProfessionalRenderer
{
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
base.OnRenderToolStripBorder(e);
var y = e.ToolStrip.Height-1;
e.Graphics.DrawLine(new Pen(SystemColors.ControlDark, 1), new Point(0, y), new Point(e.ToolStrip.Width, y));
}
Và dây nó lên qua this.toolStrip_Actions.Renderer=new MainFormToolStripRenderer();
ở dạng khởi của tôi.
Điều này đã cho tôi đường viền dưới cùng, nhưng không làm bất cứ điều gì cho các góc tròn. Ngoài ra, với biên giới phía dưới nói thêm, các góc được làm tròn là đáng chú ý hơn:
Tiếp theo, tôi cố gắng vẽ một hình chữ nhật trong thời gian xử lý sự kiện tương tự trên, thử (ít nhất) để ẩn các góc tròn và dọc gradient phía sau một đường viền hình chữ nhật vững chắc. Điều đó không hiệu quả vì vùng vẽ có sẵn (e.AffectedBounds) nằm trong các đường viền tròn.
Tôi cũng đã cố gắng đặt RenderMode của ToolStrip thành Hệ thống (và không sử dụng trình kết xuất của tôi). Trong trường hợp này, các góc của dụng cụ có vẻ vừa khít (hình chữ nhật), NHƯNG nút chia trong thanh công cụ dường như bị hỏng (nhấp vào mũi tên xuống không hiển thị menu thả xuống), vì các lý do chưa biết, và giao diện tổng thể -Cảm thấy một chút underwhelming (khá bằng phẳng, cho đến khi bạn di chuột vào một số nút trong toolstrip).
Tôi đoán cuối cùng tôi muốn gắn bó với ManageeRenderedMode hoặc trình kết xuất đồ họa tùy chỉnh kế thừa từ chuyên gia - nhưng tôi cần loại bỏ các góc được làm tròn. Trong số những người khác, tôi tìm thấy this SO Q dường như chỉ gần với những gì tôi đang xem nhưng không cho tôi câu trả lời cho trường hợp của tôi.
Cảm ơn trước
Winforms là nỗi đau để hiển thị điều gì đó khác mà không tạo điều khiển hoàn toàn. Nó có thể là quá muộn bây giờ, nhưng bạn có rối tung với WPF/XAML? – iMortalitySX
Cảm ơn, nhưng chúng tôi đã xem xét WPF trước đó và hiện tại chúng tôi đang cố gắng gắn bó với các biểu mẫu "cơ bản". Tôi không ngại kế thừa từ Toolstrip chuẩn nếu tôi cần ghi đè một số chi tiết nhất định, nhưng yeah: nó sẽ rất tuyệt nếu không phải render toàn bộ thứ đó (đặc biệt với splitbutton chúng ta cần bên trong nó, vv) – FOR