如何创建在面板中绘制表格的控件

时间:2017-01-08 21:04:05

标签: c# winforms

我想创建一个在面板中绘制表格的控件。我的代码是:

 public class PanelZ : System.Windows.Forms.Panel
{

    public static void Draw()
    {
        Panel p = new Panel();
        p.Width = 200;
        p.Height = 200;
        Graphics g = p.CreateGraphics();
        Pen mypen = new Pen(Brushes.Black, 1);
        Font myfont = new Font("tahoma", 10);
        int lines = 9;
        float x = 0;
        float y = 0;
        float xSpace = p.Width / lines;
        float yspace = p.Height / lines;
        for (int i = 0; i < lines + 1; i++)
        {
            g.DrawLine(mypen, x, y, x, p.Height);
            x += xSpace;
        }
        x = 0f;
        for (int i = 0; i < lines + 1; i++)
        {
            g.DrawLine(mypen, x, y, p.Width, y);
            y += yspace;
        }

    }

..但它不会画一张桌子;所以我该怎么做?

1 个答案:

答案 0 :(得分:4)

这会奏效。但数字应该是属性,应该是笔,然后是一些......另外:属性应该以大写字母开头。

 public class PanelZ : System.Windows.Forms.Panel
 {
    public PanelZ()                  // a constructor
    {
        Width = 200;
        Height = 200;
        DoubleBuffered = true;
        lines = 9;
    }

    public   int lines { get; set; }  // a property

    protected override void OnPaint(PaintEventArgs e)  // the paint event
    {
        base.OnPaint(e);

        Graphics g = e.Graphics;
        Pen mypen = new Pen(Brushes.Black, 1);
        Font myfont = new Font("tahoma", 10);
        float x = 0;
        float y = 0;
        float xSpace = Width / lines;
        float yspace = Height / lines;
        for (int i = 0; i < lines + 1; i++)
        {
            g.DrawLine(mypen, x, y, x, Height);
            x += xSpace;
        }
        for (int i = 0; i < lines + 1; i++)
        {
            g.DrawLine(mypen, 0, y, Width, y);
            y += yspace;
        }
    }
}

在VS工作:

enter image description here

请注意,这只会为像素着色。那里没有有用的网格,只有带颜色的像素。所以,如果你真的想要使用你定义的字体,你将不得不计算坐标和边界框。