我在这里查看过几个帖子,我找到的解决方案都没有为我工作。当你点击一个菜单项时,我正试图将一个对象从表单a传递给表单b,它给了我错误:
错误1可访问性不一致:参数类型“WindowsFormsApplication1.character”比方法“WindowsFormsApplication1.CharBuilder.CharBuilder(WindowsFormsApplication1.character)”
更难访问以下是发送表格:
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;
namespace WindowsFormsApplication1
{
public partial class GVL4 : Form
{
public GVL4()
{
InitializeComponent();
}
public void mNewGame_Click(object sender, EventArgs e)
{
character MyCharacter = new character();
MyCharacter.SetIsNew();
CharBuilder NewCharacter = new CharBuilder(MyCharacter);
NewCharacter.Show();
}
}
}
接收表格:
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;
namespace WindowsFormsApplication1
{
public partial class CharBuilder : Form
{
character Char = new character();
public CharBuilder()
{
InitializeComponent();
}
//Overloaded Constructor
public CharBuilder(character cChar)
{
Char = cChar;
}
private void txtSect_TextChanged(object sender, EventArgs e)
{
}
private void btnSaveID_Click(object sender, EventArgs e)
{
if (Char.IsNew())
{
Char.SaveCharIdentity(txtCharName.Text, txtClan.Text, txtSect.Text, txtNature.Text, txtDemeanor.Text, txtTitle.Text, txtCoterie.Text, txtSire.Text, txtPlayerName.Text, txtCharacterID.Text, txtStatus.Text, Convert.ToInt32(txtUnspentXP.Text), Convert.ToInt32(txtEarnedXP.Text), Convert.ToInt32(txtGeneration.Text), Convert.ToInt32(txtBloodPool.Text), cbxNPC.Checked);
}
txtTestBox.Text = Char.ToString();
}
public void CharBuilder_Load(object sender, EventArgs e)
{
}
}
}
错误在重载(Public CharBuilder(character cChar))
上答案 0 :(得分:1)
character
类在哪里定义?我怀疑它是GVL4
内的私人课程?错误告诉您的是,即使您将character
的实例传递给CharBuilder
,CharBuilder
实际上也无法知道是什么 character
对象是。它正在接收一个对象,但它没有定义该对象的类。
确保两个表单都知道character
类。我想它应该只是一个在项目中其他地方定义的单独类,可能是公共的或内部的,而不是任何特定形式的内部。
附注:您的代码很难阅读,因为您没有遵循C#惯例。类/类型名称应以大写开头,局部变量名称应以小写开头。
答案 1 :(得分:0)
这意味着您的character
课程的可访问性低于public
,就像您的公共方法一样。您需要确保访问修饰符是相同的。我不确定你的课堂设计,所以不确定最佳路线是什么,但如果没有人将你的代码用作图书馆,那么只需将角色类公开。
答案 2 :(得分:0)
你没有发布你的角色类的代码,但听起来这个类被标记为public
以外的东西,这就是你看到这个错误的原因。将您的character
课程的声明更改为public
,这样就可以了。