我遇到了这个问题,我无法在类中添加控件。更具体地说是Controls.Add(Button);
。这是可能的还是我错过了什么。
MyFunctions mf = new MyFunctions();
class MyFunctions
{
public int ButtonWidth(int number)
{
string a = "";
int ButtonWidth=0;
Button x = new Button();
x.Size = new Size(10, 40);//Initial Size
x.AutoSize = true;
x.AutoSizeMode = AutoSizeMode.GrowAndShrink;
Controls.Add(x);//Why i can't this one?
for(int i=1;i<=number;i++)
{
a += "X";
x.Text = a;
ButtonWidth = x.Width;
MessageBox.Show(i + "-" + a + "-" + ButtonWidth);
}
return ButtonWidth;
}
}`
我收到了一条错误消息。
无法访问外部类型的非静态成员。
我试用了button.text
更改长度时按钮宽度是否正在变化。但button.width
保持不变。
答案 0 :(得分:1)
您的MyFunctions
是与Form
课程分开的课程。因此,它没有Controls
属性(Controls
属性属于您的Form
- 或其派生 - class
)
如果您想在Button
Form
中添加class
,则应将代码视为Method
Form
而不是MyFunctions class
,分开public class MyForm : Form {
public int ButtonWidth(int number) //this is OK
{
string a = "";
int ButtonWidth=0;
Button x = new Button();
x.Size = new Size(10, 40);//Initial Size
x.AutoSize = true;
x.AutoSizeMode = AutoSizeMode.GrowAndShrink;
Controls.Add(x);//Why i can't this one?
for(int i=1;i<=number;i++)
{
a += "X";
x.Text = a;
ButtonWidth = x.Width;
MessageBox.Show(i + "-" + a + "-" + ButtonWidth);
}
return ButtonWidth;
}
}
:
ButtonWidth
话虽如此,由于您的方法名称是Button
,因此在一个旨在获取ButtonWidth
的方法中添加CreateButton
是不可取的(不是一个好的设计)。考虑分离方法:Button
创建GetButtonWidth
,ButtonWidth
以获取Button
(虽然它可能不一定是方法),然后您只需添加您创建的Form
Controls
var sampleSwitch = new UISwitch ();
sampleSwitch.Frame = new CoreGraphics.CGRect (100f,100f,10f,10f);
sampleSwitch.ValueChanged += delegate {
if (sampleSwitch.On) {
Console.WriteLine ("TRUE");
} else {
Console.WriteLine ("FALSE");
}
};
this.View.AddSubview (sampleSwitch);
{/ 1}}。{/ 1}
答案 1 :(得分:0)
您正在尝试从另一个类的实例访问类的实例。
尝试将MyFunctions
设为静态,或将函数包含在第一类派生自的基类中。