Visual studio 2010 如何在VisualBasic tableLayoutPanel中放置形状(椭圆形、矩形、线条)?

Visual studio 2010 如何在VisualBasic tableLayoutPanel中放置形状(椭圆形、矩形、线条)?,visual-studio-2010,Visual Studio 2010,听起来像是个愚蠢的问题,但每当我将椭圆拖到桌子上时,就会弹出一个错误:无法在“TableLayoutPanel”类型的容器中创建“Shape”类型的组件。有什么方法可以解决这个问题吗?形状类需要一个容器,一个ShapeContainer类的实例,当您使用设计器在表单上放置形状时,它是不可见的。从技术上讲,您可以从属性窗口顶部的控件选择器组合框中找到它,默认名称为“shapeContainer1”,并且没有任何属性。此容器类的曲面用于绘制形状 所有这些都是使用自定义设计器完全自动完成的,它确保在将

听起来像是个愚蠢的问题,但每当我将椭圆拖到桌子上时,就会弹出一个错误:无法在“TableLayoutPanel”类型的容器中创建“Shape”类型的组件。有什么方法可以解决这个问题吗?

形状类需要一个容器,一个ShapeContainer类的实例,当您使用设计器在表单上放置形状时,它是不可见的。从技术上讲,您可以从属性窗口顶部的控件选择器组合框中找到它,默认名称为“shapeContainer1”,并且没有任何属性。此容器类的曲面用于绘制形状

所有这些都是使用自定义设计器完全自动完成的,它确保在将形状从工具箱拖动到窗体上时创建ShapeContainer实例。问题是,这个设计器不够聪明,无法处理TableLayoutPanel类。它应该做的是创建一个ShapeContainer,它可以嵌入到TLP的一个单元格中,而不是。相反,它只是放弃并显示消息框。或者换一种说法,你看到的是微软程序员已经放弃了让这项工作。正确的操作不是很简单,很难再次摆脱那些看不见的容器

唯一的解决方法是自己编写代码。您可以在表单的构造函数中执行此操作。在上/左表单元格中放置线型的简单示例:

    public Form1() {
        InitializeComponent();
        var line = new Microsoft.VisualBasic.PowerPacks.LineShape() {
            X1 = 0, Y1 = 0, X2 = 50, Y2 = 20
        };
        var container = new Microsoft.VisualBasic.PowerPacks.ShapeContainer();
        container.Shapes.Add(line);
        container.Size = new System.Drawing.Size(50, 20);
        tableLayoutPanel1.Controls.Add(container, 0, 0);
    }

我知道这是一条旧线。。。但为了将来可能会寻找更容易的选择的人,我找到了以下解决方案:

在要放置形状的TablePanelLayout中插入面板,VisualStudio应允许您将形状放置在新创建的面板中


祝你好运。

也许你可以详细说明你的实际目标是什么(细节放在一边),也就是说,我正在尝试用X制作一个UI来显示Y。屏幕截图会有所帮助。