这是带方法的类
public partial class NewGame : Form
{
public NewGame()
{
InitializeComponent();
this.Icon = new Icon("Resources/iconG.ico");
comboBoxGenre.Items.AddRange(Enum.GetNames(typeof(Game.Genre)));
}
public string GetGameName()
{
return txtbxGameName.Text.Trim();
}
public int GetGenreSelector()
{
return comboBoxGenre.SelectedIndex;
}
}
这是我的主要表格
private void addGameToolStripMenuItem_Click(object sender, EventArgs e)
{
Form newGame = new NewGame();
newGame.ShowDialog(this);
if (newGame.DialogResult==DialogResult.OK)
{
string gameName = newGame.GetGameName(); //this part doesn't work
}
}
我收到错误消息:
几个星期前我写了类似的代码,它完美无缺。错误1
'System.Windows.Forms.Form'不包含的定义 'GetGameName'并且没有扩展方法'GetGameName'接受第一个 可以找到类型'System.Windows.Forms.Form'的参数(是吗? 缺少using指令或程序集 引用?)
答案 0 :(得分:6)
替换
Form newGame = new NewGame();
与
NewGame newGame = new NewGame();
您的newGame
变量属于Form
类型,不包含这些方法。
您已在NewGame
类中定义了这些方法,因此如果使用正确的类型,它们将可见。
如果您确实需要使用父类型(Form
),则可以将对象转换为NewGame
:
Form newGame = new NewGame();
string gameName = ((NewGame)newGame).GetGameName();
答案 1 :(得分:1)
变量newGame
的静态类型为Form
,因此只有Form
的方法可见,即使变量实际指向NewGame
对象。使变量的类型与对象的实际类型匹配,并且可以访问这些方法。
NewGame newGame = new NewGame();
答案 2 :(得分:0)
试试这个
用这个替换你的方法
private void addGameToolStripMenuItem_Click(object sender, EventArgs e)
{
NewGame newGame = new NewGame();
newGame.ShowDialog(this);
if (newGame.DialogResult==DialogResult.OK)
{
string gameName = newGame.GetGameName(); //this part doesn't work
}
}