首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#窗体里小弟我用代码创建了一个groupbox控件,接着绘制了一个长方形,长方形不显示,这是为什么

2013-08-16 
C#窗体里我用代码创建了一个groupbox控件,接着绘制了一个长方形,长方形不显示,这是为什么?if (item.Key.To

C#窗体里我用代码创建了一个groupbox控件,接着绘制了一个长方形,长方形不显示,这是为什么?
                   if (item.Key.ToString() == "编码控制器")
                    {
                        GroupBox groupbox = new GroupBox();
                        groupbox.Text = "编码控制器";
                        groupbox.Location = new Point(20, 20);
                        groupbox.Size = new Size(530, 200);
                        groupbox.BackColor = Color.Transparent;
                        this.Controls.Add(groupbox);

                        IList i_cc = item.Value;
                        for (int i = 0; i < i_cc.Count; i++)
                        {

                            System.DateTime curr_time = System.DateTime.Now;
                            string tt = curr_time.ToString();
                            Label label = new Label();
                            label.Text = tt;
                            label.Location = new Point(30 + 180 * i, 60);


                            label.Size = new Size(160, 20);
                            label.BackColor = Color.Transparent;
                            this.Controls.Add(label);
                            label.BringToFront();

                            string[] cc_arr = i_cc[i].ToString().Split(',');
                            //长方形
                            Graphics dc = this.CreateGraphics();
                            this.Show();
                            Pen blackPen = new Pen(Color.White, 2);
                            dc.DrawRectangle(blackPen, 30, 75, 180, 40); C# GDI
[解决办法]
代码不用药堆在一起啊,处理绘制的由paint处理,你说得根据数据绘制矩形传些变量过去不就行了吗
[解决办法]

引用:
Quote: 引用:


代码不用药堆在一起啊,处理绘制的由paint处理,你说得根据数据绘制矩形传些变量过去不就行了吗




矩形我画出来,但是自它一下的控件便出不来,我是用程序动态创建控件的。我展示几处代码。

//我写的方法 paint
      private void Test2_Paint(object sender, PaintEventArgs e)
        {
            //Graphics dc = this.CreateGraphics();
            Graphics dc = e.Graphics;
            this.Show();
            Pen blackPen = new Pen(Color.Black, 1);
            dc.DrawRectangle(blackPen, 30, 75, 180, 30);
            dc.Dispose();
        }

//调用
Test2_Paint(sender, pe);

写一个控件继承你需要创建的控件,在自己写的控件中重写onpaint方法,在重写的方法中绘制矩形。
这样动态创建的控件也就可以有一个矩形了。不过可能会闪,还要在自己的控件中设置双缓冲。
[解决办法]
这样就可以了啊,不用太纠结

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private GroupBox groupbox;
    private Graphics gc;
    private int count;

    private void Form1_Load(object sender, EventArgs e)
    {
        groupbox = new GroupBox();
        groupbox.Text = "绘制正方形";
        groupbox.Location = new Point(10, 10);
        groupbox.Size = new Size(400, 300);
        this.Controls.Add(groupbox);

        //或者查询其他
        count = int.Parse(ConfigurationManager.AppSettings["count"].ToString());
        gc = groupbox.CreateGraphics();
        groupbox.Paint += RenderRectangle;
    }


    private void RenderRectangle(object sender, PaintEventArgs e)


    {
        for (int i = 0; i < count; i++)
        {
            using (Pen blackPen = new Pen(Color.Black, 2))
            {
                gc.DrawRectangle(blackPen, 20 + i * 70, 20, 50, 50);
            }
        }
    }
}

热点排行