Class 不包含在显示窗体时接受0个参数的构造函数
我有一个rpg游戏,我已经工作了一段时间,我似乎无法得到列表设置。对于我想使用的不同设备,我有不同的课程,我发现很难在这些课程中设置列表,然后从不同的课程调用它,并以我的形式调用组合框。所以我决定从头开始,可能会问一个问题,所以我删除了所有的列表,并尝试运行该程序。出于某种原因,在我的“创建角色”屏幕上,我调用了Class 不包含在显示窗体时接受0个参数的构造函数,class,Class,我有一个rpg游戏,我已经工作了一段时间,我似乎无法得到列表设置。对于我想使用的不同设备,我有不同的课程,我发现很难在这些课程中设置列表,然后从不同的课程调用它,并以我的形式调用组合框。所以我决定从头开始,可能会问一个问题,所以我删除了所有的列表,并尝试运行该程序。出于某种原因,在我的“创建角色”屏幕上,我调用了 this.Hide(); HomeScreen next = new HomeScreen(); next.ShowDialog(); 但是对于我的主屏幕表单,我最终在那里放置了一个
this.Hide();
HomeScreen next = new HomeScreen();
next.ShowDialog();
但是对于我的主屏幕表单,我最终在那里放置了一个参数主屏幕(KylesRpgGame游戏)
,这样我就可以使用我的创建角色表单中的变量将它们放在主屏幕上。我不知道以前是如何工作的,但是现在我无法调用新的屏幕,因为我认为类中有一个参数,我不知道如何通过它。另外,如果有人对创建一个包含列表(比如标题项)的新类并将其调用到我的HomeScreen()构造函数有任何建议,那就太好了
KylesRpgGame
=创建一个字符
主屏幕
=我试图显示的主屏幕
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Engine;
namespace KylesRpgGame
{
public partial class KylesRpgGame : Form
{
Int32 remainingPoints { get; set; }
public Player player1;
public KylesRpgGame()
{
InitializeComponent();
//Variables
remainingPoints = 15;
player1 = new Player();
//
//Attributes -> Lables
lblStrengthPoints.Text = player1.Strength.ToString();
lblAgilityPoints.Text = player1.Agility.ToString();
lblIntelligencePoints.Text = player1.Intelligence.ToString();
lblStaminaPoints.Text = player1.Stamina.ToString();
lblPointsRemaining.Text = remainingPoints.ToString();
//
}
private void btnStrInc_Click(object sender, EventArgs e)
{
if (remainingPoints > 0)
{
player1.Strength++;
remainingPoints--;
lblStrengthPoints.Text = player1.Strength.ToString();
lblPointsRemaining.Text = remainingPoints.ToString();
}
}
private void btnStrDec_Click(object sender, EventArgs e)
{
if (player1.Strength > 0)
{
player1.Strength--;
remainingPoints++;
lblStrengthPoints.Text = player1.Strength.ToString();
lblPointsRemaining.Text = remainingPoints.ToString();
}
}
private void btnAgiInc_Click(object sender, EventArgs e)
{
if (remainingPoints > 0)
{
player1.Agility++;
remainingPoints--;
lblAgilityPoints.Text = player1.Agility.ToString();
lblPointsRemaining.Text = remainingPoints.ToString();
}
}
private void btnAgiDec_Click(object sender, EventArgs e)
{
if (player1.Agility > 0)
{
player1.Agility--;
remainingPoints++;
lblAgilityPoints.Text = player1.Agility.ToString();
lblPointsRemaining.Text = remainingPoints.ToString();
}
}
private void btnIntInc_Click(object sender, EventArgs e)
{
if (remainingPoints > 0)
{
player1.Intelligence++;
remainingPoints--;
lblIntelligencePoints.Text = player1.Intelligence.ToString();
lblPointsRemaining.Text = remainingPoints.ToString();
}
}
private void btnIntDec_Click(object sender, EventArgs e)
{
if (player1.Intelligence > 0)
{
player1.Intelligence--;
remainingPoints++;
lblIntelligencePoints.Text = player1.Intelligence.ToString();
lblPointsRemaining.Text = remainingPoints.ToString();
}
}
private void btnStaInc_Click(object sender, EventArgs e)
{
if (remainingPoints > 0)
{
player1.Stamina++;
remainingPoints--;
lblStaminaPoints.Text = player1.Stamina.ToString();
lblPointsRemaining.Text = remainingPoints.ToString();
}
}
private void btnStaDec_Click(object sender, EventArgs e)
{
if (player1.Stamina > 0)
{
player1.Stamina--;
remainingPoints++;
lblStaminaPoints.Text = player1.Stamina.ToString();
lblPointsRemaining.Text = remainingPoints.ToString();
}
}
private void btnTest_Click(object sender, EventArgs e)
{
//player.var = textbox
player1.CharacterName = txtCharacterName.Text;
//Get Gender
if (rdoMale.Checked)
player1.Gender = "Male";
else
player1.Gender = "Female";
//Class
player1.Class = cboClass.Text;
//If name is blank or begin with spaces, return
if(String.IsNullOrEmpty(txtCharacterName.Text) || txtCharacterName.Text[0] ==' ')
{
MessageBox.Show("You must insert a correct name. Names cannot begin with spaces.");
return;
}
//if male or female is checked, return. If not
if(rdoMale.Checked == false && rdoFemale.Checked == false)
{
MessageBox.Show("You must select a gender.");
return;
}
//Get class
if (cboClass.Text != "Warrior")
{
if (cboClass.Text != "Hunter")
{
if (cboClass.Text != "Priest")
{
MessageBox.Show("Choose a class.");
return;
}
}
}
//Make them use all points
if (remainingPoints > 0)
{
MessageBox.Show("You must use all your points.");
return;
}
//Comfirmation Message Box
MessageBox.Show("Your name is " + player1.CharacterName + "\n" + "Your Gender is "
+ player1.Gender + "." + "\n" + "Your Strength is " + player1.Strength + "\n"
+ "Your Agility is " + player1.Agility + "\n" + "Your Intelligence is "
+ player1.Intelligence + "\n" + "Your Stamina is " + player1.Stamina);
this.Hide();
HomeScreen next = new HomeScreen();
next.ShowDialog();
}
}
}
无法向windows窗体的构造函数添加参数。这非常烦人,但这是平台的一个限制。在构建类之后,您必须修改它。如果需要严格的状态控制,您可以始终围绕表单构建一个包装类。即使我从构造函数中取出参数,它也会返回一个“System.NullReferenceException”,这是在创建屏幕窗口尝试切换到主屏幕后发生的。我相信在删除参数并保留全局KyleRpgGame父项之后;它使我所有的变量无效。我试图将一个类包装在form类周围,但这也不起作用。My labels and InitializeComponent();下面有红色的波浪。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Engine;
namespace KylesRpgGame
{
public partial class HomeScreen : Form
{
KylesRpgGame parent;
public HomeScreen(KylesRpgGame game)
{
parent = game;
InitializeComponent();
FindMaxExperience();
PopulateStats();
}
public void FindMaxExperience()
{
if (parent.player1.Level == 1)
parent.player1.MaxExperience = 100;
else if (parent.player1.Level == 2)
parent.player1.MaxExperience = 200;
else if (parent.player1.Level == 3)
parent.player1.MaxExperience = 300;
else if (parent.player1.Level == 4)
parent.player1.MaxExperience = 400;
else if (parent.player1.Level == 5)
parent.player1.MaxExperience = 500;
}
public void PopulateStats()
{
//Calculate secondary stats
//Critical Strike
parent.player1.CriticalStrike = ((double)parent.player1.Strength / parent.player1.CriticalStrikeMultiplier);
parent.player1.CriticalStrikeToPercentage = parent.player1.CriticalStrike.ToString("P2");
//
//Double Turn
parent.player1.DoubleTurn = ((double)parent.player1.Agility / parent.player1.DoubleTurnMultiplier);
parent.player1.DoubleTurnToPercentage = parent.player1.DoubleTurn.ToString("P2");
//
//Spell Power
parent.player1.SpellPower = ((double)parent.player1.Intelligence / parent.player1.SpellPowerMultiplier);
parent.player1.SpellPowerToPercentage = parent.player1.SpellPower.ToString("P2");
//
//Hit Points
parent.player1.HitPointsModifier = parent.player1.Stamina * 10;
parent.player1.HitPoints = parent.player1.StartingHitPoints + parent.player1.HitPointsModifier;
//
//Set Labels
lblCharacterName.Text = parent.player1.CharacterName.ToString();
lblGender.Text = parent.player1.Gender.ToString();
lblClass.Text = parent.player1.Class.ToString();
lblLevel.Text = parent.player1.Level.ToString();
lblExperience.Text = parent.player1.Experience.ToString() + "/" + parent.player1.MaxExperience.ToString();
lblGold.Text = parent.player1.Gold.ToString();
lblStrength.Text = parent.player1.Strength.ToString();
lblAgility.Text = parent.player1.Agility.ToString();
lblIntelligence.Text = parent.player1.Intelligence.ToString();
lblStamina.Text = parent.player1.Stamina.ToString();
lblCriticalStrike.Text = parent.player1.CriticalStrikeToPercentage.ToString();
lblDoubleTurn.Text = parent.player1.DoubleTurnToPercentage.ToString();
lblSpellPower.Text = parent.player1.SpellPowerToPercentage.ToString();
lblHitPoints.Text = parent.player1.HitPoints.ToString();
}
}
}