请考虑以下Windows窗体代码:
namespace SameWinFormsProject
{
// Top-level form.
public partial class Form1: Form
{
public Form1()
{
InitializeComponent(); // Boilerplate code.
}
private void Form1_Load(object sender, EventArgs e)
{
Rectangle local;
local = GetButtonFace(); // error CS0103: The name 'GetButtonFace' does not exist in the current context
}
}
// Custom button control.
class MyCustomButton: Button
{
Rectangle face;
protected override void OnPaint(PaintEventArgs e)
{
// ...
}
Rectangle GetButtonFace()
{
return face;
}
}
}
如何从顶级窗体GetButtonFace()
中的任何位置调用MyCustomButton
函数(属于Form1
类)?
答案 0 :(得分:2)
您需要一个实例变量来访问GetButtonFace()
方法,因为它在另一个类中。
试试这个:
MyCustomButton mybutton=new MyCustomButton();
local = mybutton.GetButtonFace();
答案 1 :(得分:2)
首先,默认情况下,成员的可见性为private
。
第二,face
矩形是否应该在没有MyCustomButton
实例的情况下可用?如果是这样,那就让它静止:
internal static GetButtonFace()
{
return face;
}
当然face
也必须是静态的:
static Rectangle face;
如果静态方法不是您想要的,那么您需要一个MyCustomButton
实例来调用您的方法,正如Sudhakar所建议的那样。