Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么属性网格显示的颜色不正确?_C#_Winforms - Fatal编程技术网

C# 为什么属性网格显示的颜色不正确?

C# 为什么属性网格显示的颜色不正确?,c#,winforms,C#,Winforms,我有一个属性网格,每当我在面板上单击一个矩形时,它就会显示该矩形的属性。除颜色外,所有属性均正确,颜色始终保持默认值(白色)。我想知道是否有一种方法可以让属性网格显示矩形的颜色 下面是它当前的屏幕截图: 下面是我创建矩形的方法: 这是我的矩形类 internal class rectangle : Shape { public int length { get; set; } public int width { get; set; } Ran

我有一个属性网格,每当我在面板上单击一个矩形时,它就会显示该矩形的属性。除颜色外,所有属性均正确,颜色始终保持默认值(白色)。我想知道是否有一种方法可以让属性网格显示矩形的颜色

下面是它当前的屏幕截图:

下面是我创建矩形的方法:
这是我的矩形类

internal class rectangle : Shape
{
        public int length { get; set; }
        public int width { get; set; }

        Random rand = new Random();
        Rectangle newRectangle;

        public override Rectangle GetRectangle()
        {
            return this.newRectangle;
        }

        private Color randomColor()
        {
            int r = rand.Next(0, 256); // Random number between 0 - 255
            int g = rand.Next(0, 256);
            int b = rand.Next(0, 256);

            Color color = Color.FromArgb(r, g, b);
            return color;
        }

        private Rectangle makeRectangle(int startx, int starty, int width, int length)
        {
            newRectangle = new Rectangle(startx, starty, width, length);
            return newRectangle;
        }

        public override void Draw(Graphics g)
        {
            using (SolidBrush brush = new SolidBrush(randomColor()))
            {
                g.FillRectangle(brush, makeRectangle(startx, starty, width, length));
            }
        }
}
矩形类是从形状派生的:

internal abstract class Shape
    {
        public Color color { get; set; }
        public int thickness { get; set; }
        public int startx { get; set; }
        public int starty { get; set; }

        public abstract Rectangle GetRectangle();   
        public virtual void Draw(Graphics g)
        {
        }
    }
在主窗体中,我正在绘制矩形:

// Rectangle 1 
List<Shape> shapes = new List<Shape>();
rectangle rectangle = new rectangle();
rectangle.startx = 100;
rectangle.starty = 200;
rectangle.width = 200;
rectangle.length = 100;
shapes.Add(rectangle);

rectangle.Draw(g);

根据提供的代码,我正在创建带有随机rgb颜色的SolidBrush。所以我希望属性网格显示正确的颜色。谢谢

您正在创建一种随机颜色,以便在
Draw
方法中创建笔刷,但您没有将此颜色指定给要在特性网格中显示的对象的任何特性

rectangle rectangle = new rectangle();
rectangle.color = randomColor(); // <========================
rectangle.startx = 100;
rectangle.starty = 200;
rectangle.width = 200;
rectangle.length = 100;
应将此随机颜色指定给正在属性网格中显示的
形状
矩形
对象

rectangle rectangle = new rectangle();
rectangle.color = randomColor(); // <========================
rectangle.startx = 100;
rectangle.starty = 200;
rectangle.width = 200;
rectangle.length = 100;

属性网格显示的属性不是标准
System.Drawing.Rectangle
的属性。您正在使用的
矩形
形状
类的定义在哪里?您向属性网格分配了什么以及如何分配?您需要显示属性。现在唯一的问题是,您绘制的随机颜色显然不会显示在属性网格上,因为它不会在任何属性中设置。
using (SolidBrush brush = new SolidBrush(this.color))
{
    g.FillRectangle(brush, makeRectangle(startx, starty, width, length));
}