2015-06-26 100 views
0

我是新来的C#和使用窗体,所以原谅我,如果我不明白这应该如何工作。C#:无法访问私有方法中的公共方法

我想在窗体中创建一个LayoutTablePanel来最终显示一些数据。

在Visual Studio中,我知道我可以将一个LayoutTablePanel拖放到窗体设计器中,以便直观地看到添加的表格,但为了更容易添加/编辑表格,我希望从公共Form1中()级别,像这样:

public partial class Form1 : Form 
{  
public Form1() 
{ 
    InitializeComponent(); 
    TableLayoutPanel ClassCol = new TableLayoutPanel(); 
    ClassCol.Location = new System.Drawing.Point(0, 20); 
    ClassCol.Name = "ClassCol"; 
    ClassCol.Size = new System.Drawing.Size(79, 400); //add a changing variable here later. 
    ClassCol.TabIndex = 0; 
    ClassCol.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single; 
    Controls.Add(ClassCol); 
} 

private void toolStripLabel1_Click(object sender, EventArgs e) 
{ 

} 
} 

现在,这个初始化TableLayoutPanel中运行时,这就是我想要的,但我想修改(动态添加行)以后通过点击某些按钮。在这种情况下,通过点击toolStripLabel1_Click方法;但是,在其中的私有方法中键入Class.Col时,似乎无法访问我创建的TableLayoutPanel实例的迭代。如果有人能帮我解决这个问题,那会很感激。谢谢。

编辑:如果我调整,像这样的代码:

public partial class Form1 : Form 
{  
    TableLayoutPanel ClassCol = new TableLayoutPanel(); 
    ClassCol.Location = new System.Drawing.Point(0, 20); 
    ClassCol.Name = "ClassCol"; 
    ClassCol.Size = new System.Drawing.Size(79, 400); //add a changing variable here later. 
    ClassCol.TabIndex = 0; 
    ClassCol.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single; 
    Controls.Add(ClassCol); 

public Form1() 
{ 
    InitializeComponent(); 
} 

private void toolStripLabel1_Click(object sender, EventArgs e) 
{ 

} 
} 

它说我用Form1.ClassCol,如果它是一个“类型”时,这是一个“场”。

+0

您的“ClassCol”在代码的第一个Form1()块中“死亡”。采用公开的方法并不能让你“公开”地访问它。 – bardao

+0

在您的代码中ClassCol是本地的,而不是公共变量 – Disappointed

+0

也许先回到基础知识,并阅读“变量范围”和C#类的一般结构(例如,可以声明去,实际代码去哪里)等等。看到你的编辑,你似乎被误解了你需要理解代码的基础知识。这并不意味着粗鲁,但只是一个建议让它慢一点。 – Jens

回答

1

您需要移动这条线:

TableLayoutPanel ClassCol = new TableLayoutPanel(); 

这条线之上:

public Form1() 

您是在本地声明它的Form1()构造函数中,所以没有其他的方法将能够访问它。您需要在课程级别而不是方法级别声明它。

+0

它仍然可以访问,但通过做一些形式的儿童技巧 - 远离最佳和维护地狱 – Machinarius

+0

@Machinarius - 是的,但为什么混淆新的C#的人? – Icemanind

+0

这是我没有发布任何代码的主要原因。这似乎是不公平的,不说它 – Machinarius