Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 如何防止设计器将控制成员修改器更改为私有?_Visual Studio 2010_C# 4.0 - Fatal编程技术网

Visual studio 2010 如何防止设计器将控制成员修改器更改为私有?

Visual studio 2010 如何防止设计器将控制成员修改器更改为私有?,visual-studio-2010,c#-4.0,Visual Studio 2010,C# 4.0,当我在Designer中更改DataGridViewColumn的属性时,我先前在.Designer.cs文件中将其修改器手动更改为public,修改器将恢复为private 有什么方法可以防止这种情况发生吗?我建议不要更改设计器 如果确实需要将控件公开,我建议添加一个属性以在代码文件(而不是设计器文件)中公开它们: 这将提供对设计器生成的类型的公共访问,而无需担心设计器会覆盖您的更改 从长远来看,这也使它更加清晰,因为公共API是在主代码文件中定义的,而不是在第二个设计器生成的文件中定义的 话

当我在Designer中更改DataGridViewColumn的属性时,我先前在.Designer.cs文件中将其修改器手动更改为public,修改器将恢复为private


有什么方法可以防止这种情况发生吗?

我建议不要更改设计器

如果确实需要将控件公开,我建议添加一个属性以在代码文件(而不是设计器文件)中公开它们:

这将提供对设计器生成的类型的公共访问,而无需担心设计器会覆盖您的更改

从长远来看,这也使它更加清晰,因为公共API是在主代码文件中定义的,而不是在第二个设计器生成的文件中定义的

话虽如此,总的来说,我会避免这样做。实际上,我建议公开要设置的数据,而不是公开控件本身。以上面的文本框为例-如果此文本框是一个标题,我将直接公开:

public string Title
{  
    get { return this.textBoxTitle.Text; }
    set { this.textBoxTitle.Text = value; }
}

感谢Reed,但是每次我在设计器中添加控件时,都必须为我需要访问的每个控件成员手动添加属性,这是我希望避免的事情。因此我使用了public。@ChrisJJ:这是我的观点的一部分-控制细节应该是内部的,而不是公共的。重点放在为您的类型输入对外部世界很重要的属性上-可以是一个单独的类,可以设置,甚至映射到所有控件…如何避免为我需要访问的每个控件成员手动添加属性,每次我在设计器中添加一个控件时?@ChrisJJ:我不会-我会让公共表面尽可能小,但会想添加一个成员并控制它。
public string Title
{  
    get { return this.textBoxTitle.Text; }
    set { this.textBoxTitle.Text = value; }
}