0

コントロールCellで構成される次のクラスがあるとします。Label

class Cell : UserControl
{
    Label base;

    public Cell(Form form)
    {
        base = new Label();
        base.Parent = form;        
        base.Height = 30;
        base.Width = 30;
    }
} 

public partial class Form1 : Form
{ 
    Label label = new Label();

    public Form1()
    {
        InitializeComponent();

        Cell cell = new Cell(this);
        cell.Location = new Point(150, 150);   //this doesnt work            
        label.Location = new Point(150,150);   //but this does
    }
}

シングルCellはに表示されますが、Formその位置に固定されtop left (0,0)ます。

LocationプロパティをPoint他の座標でnewに設定しても、Cellは左上に残るため、何もしません。

ただし、新しいものを作成してLabelからその場所を設定しようとすると、ラベルが移動します。

Cell私のオブジェクトでこれを行う方法はありますか?

4

2 に答える 2

2

あなたの主な問題は、コンテナにコントロールを正しく追加していないことだと思います。

まず、内側のラベルをセルに追加する必要があります。

class Cell : UserControl
{       
    Label lbl;

    public Cell()
    {
        lbl = new Label();
        lbl.Parent = form;        
        lbl.Height = 30;
        lbl.Width = 30;
        this.Controls.Add(lbl); // label is now contained by 'Cell'
    }
} 

次に、セルをフォームに追加する必要があります。

Cell cell = new Cell();
form.Controls.Add(cell);

また; 「base」は予約語であるため、内部ラベル コントロールにそのような名前を付けることはできません。

于 2012-09-27T00:55:12.647 に答える
0

これを試して:

class Cell : Label
    {

    public Cell(Form form)
        {

                this.Parent = form;        
            this.Height = 30;
            this.Width = 30;
        }
    } 


    public partial class Form1 : Form
    { 
        Label label = new Label();


        public Form1()
        {
            InitializeComponent();


            Cell cell = new Cell(this);

            cell.Location = new Point(150, 150);   //this doesnt work

            label.Location = new Point(150,150);   //but this does

        }
于 2012-09-27T00:35:30.577 に答える