Ich lerne C# mit WinForms und Konsolen-Apps. Ich habe ein Problem beim Zugriff auf eine andere Formularvariable. Anstatt neue Formularobjekte zu deklarieren, erkannte ich, dass ich zur Verwendung der Variablen aus einem anderen Formular dieselbe Formularinstanz verwenden musste, die die Variable enthielt. Nachdem ich meine Formulare geändert hatte, wurde in der Datei Program.cs ein Fehler angezeigt, der anscheinend nicht behoben werden konnte. Ich bin ziemlich neu in C# in Forms, also Sorry im Voraus, wenn dies ein Noob-Fehler ist. Deklarieren von Objekten der Klassen ist mir neu: XZugriff auf andere Formularvariablen
Hier ist der Code hinter den Formen, so dass Sie ein besseres Verständnis bekommen:
frmOptions:
public partial class frmOptions : Form
{
frmHelp frmHelp1;
public frmOptions(frmHelp frmHelp1)
{
InitializeComponent();
}
private void tbnDisplayHelp_Click(object sender, EventArgs e)
{
//frmHelp frmHelp = new frmHelp(); //Declare a new object for the Help form so it can be accessed
frmHelp1.bAccessedFromForm = true;
this.Close();
frmHelp1.Show();
}
frmHelp:
public partial class frmHelp : Form
{
frmOptions frmOptions1;
frmLoginCreate frmLoginCreate1;
public bool bAccessedFromForm = false;
public frmHelp(frmOptions frmOptions1, frmLoginCreate frmLoginCreate)
{
InitializeComponent();
}
private void btnOK_Click(object sender, EventArgs e)
{
//frmLoginCreate frmLoginCreate1 = new frmLoginCreate();
this.Hide();
frmLoginCreate1.Show();
}
private void frmHelp_Load(object sender, EventArgs e)
{
if (bAccessedFromForm == true)
{
btnOK.Hide();
btnReturnToForm.Show();
}
}
private void btnReturnToForm_Click(object sender, EventArgs e)
{
this.Hide();
frmOptions1.Show();
btnOK.Show();
}
}
Dies ist meine Datei Program.cs:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmHelp());
}
}
Dies ist der Fehler, den ich in meinem Program.cs bekommen file:
Es gibt kein Argument gegeben, die auf die erforderlichen formalen Parameter 'frmOptions1' von
entspricht 'frmHelp.frmHelp (frmOptions, frmLoginCreate)'
Der einzige 'Konstruktor' innerhalb der 'frmHelp' -Form, der 2 Parameter erwartet und Sie keine bereitstellen, erstellen Sie eine' Konstruktor'-Überladung, die keine Parameter erwartet, dann wird es keine Fehler mehr geben. –
Welche Variablen benötigen Sie in den anderen Formen? Können Sie Ihren Code aktualisieren? –
Den gleichen Namen für Felder und Parameter zu wählen, wird ein Chaos. Ich bevorzuge die Präfixierung der Felder mit _ –