Estoy creando una aplicación en la que el extremo delantero tiene que ser un Formulario de Windows con C++/CLI. Se utiliza el formulario de inicio de sesión propósito.

En mi formulario tengo un botón de registro. Haga clic en este botón, una nueva forma debe abrir ( cerrando el formulario de inicio de sesión ). Yo era capaz de lograr esto mediante el siguiente código:

Form^ rgForm = gcnew RegisterForm;
rgForm->Show();
this->Hide(); //using this->Close() was closing the application

Ahora quiero tener un botón de cancelar en el formulario de registro, cuya clic debe abrir el formulario de inicio de sesión de nuevo y cerrar el formulario de registro. ¿Cómo puedo lograr esto?

( Estoy confundido con el uso de este->Ocultar(), significa que la forma existe, simplemente no lo muestra, y por lo que incluso después de que el formulario de registro de la visibilidad, el formulario de inicio de sesión todavía existe? )

Actualización : Ahora forma actual identificador se pasa en el formulario de registro de constructor ( guardar como una variable privada con el nombre de loginForm en RegisterForm clase ).

El siguiente es el código para el botón cancelar haga clic en:

//RegisterForm class constructor

RegisterForm(System::Windows::Forms::Form^ f)
{
    loginForm = f;
}

//Cancel button click

private: System::Void BtnCancel_Click(System::Object^  sender, System::EventArgs^  e) 
{
     loginForm->Show();
     this->Hide();
}

Sobre el botón cancelar, haga clic en me estoy haciendo la excepción : «el objeto no establecida como instancia».

Por favor alguien puede ayudarme.

Gracias.

InformationsquelleAutor Jake | 2011-04-24

3 Comentarios

  1. 3

    Crear un constructor para RegisterForm que acepta un System::Windows::Form ^ objeto, y de paso this a él cuando le instancias dentro de la forma de inicio de sesión de clase

    Form^ rgForm = gcnew RegisterForm(this);
    rgForm->Show();
    this->Hide();

    Asumir el formulario de inicio de sesión de objeto se llama otherform dentro de la RegisterForm clase. Una vez que esté listo para traerlo de vuelta, simplemente llame a otherform->Show()

    Cuando se oculta el formulario, que todavía existe, no es visible para el usuario.

    EDICIÓN: tengo este que funciona muy bien. Aquí están las modificaciones (no el código completo) que hice para el formulario

    Form2(formulario de Inscripción)

    Form2(System::Windows::Forms::Form ^ frm1)
        {
            otherform = frm1;
            InitializeComponent();
    
        }
    
    private: System::Windows::Forms::Form ^ otherform;
    
    private: System::Void Cancel_Click(System::Object^  sender, System::EventArgs^  e) {
                 this->Hide();
                 otherform->Show();

    }

    Form1(formulario de inicio de Sesión)

    #include "Form2.h"
    
    private: System::Void Register_Click(System::Object^  sender, System::EventArgs^  e) {
    
                 Form2 ^ frm2 = gcnew Form2(this);
                 frm2->Show();
                 this->Hide();
    }
    • Es esta la manera correcta de hacerlo en el constructor: RegisterForm(Sistema de::Windows::Formularios::Formulario de^ f) { otherForm = f; } porque en el uso de otherForm en el botón Cancelar, haga clic en, puedo obtener una referencia nula. Gracias.
    • puedes publicar el código que se está utilizando en el botón Cancelar, haga clic en?
    • He editado la pregunta ( añadido botón cancelar código )
    • Estoy tratando de hacer una maqueta de su código. Va a ser un par de minutos.
    • Yo tengo que trabajar bien. He publicado el código. Compruebe que tiene de todo (la forma como una variable miembro, todos los includes, etc.)
    • Se trabajó….muchas gracias! 🙂
    • No hay problema

  2. 1

    Por lo tanto , me gustaría mostrar mi código completo para ayudar a los demás:-

    Form2.h

    #pragma once
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    namespace Form1 {
    ///<summary>
    ///Summary for Form2
    ///</summary>
    public ref class Form2 : public System::Windows::Forms::Form
    {
    private: System::Windows::Forms::Form ^ otherform;
    public:
    Form2(System::Windows::Forms::Form ^ o )
    {
    otherform = o;
    InitializeComponent();
    //
    //TODO: Add the constructor code here
    //
    }
    protected:
    ///<summary>
    ///Clean up any resources being used.
    ///</summary>
    ~Form2()
    {
    if (components)
    {
    delete components;
    }
    }
    private: System::Windows::Forms::Button^  button1;
    protected: 
    private:
    ///<summary>
    ///Required designer variable.
    ///</summary>
    System::ComponentModel::Container ^components;
    #pragma region Windows Form Designer generated code
    ///<summary>
    ///Required method for Designer support - do not modify
    ///the contents of this method with the code editor.
    ///</summary>
    void InitializeComponent(void)
    {
    this->button1 = (gcnew System::Windows::Forms::Button());
    this->SuspendLayout();
    //
    //button1
    //
    this->button1->Location = System::Drawing::Point(147, 132);
    this->button1->Name = L"button1";
    this->button1->Size = System::Drawing::Size(102, 38);
    this->button1->TabIndex = 0;
    this->button1->Text = L"Menu";
    this->button1->UseVisualStyleBackColor = true;
    this->button1->Click += gcnew System::EventHandler(this, &Form2::button1_Click);
    //
    //Form2
    //
    this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    this->ClientSize = System::Drawing::Size(412, 295);
    this->Controls->Add(this->button1);
    this->Name = L"Form2";
    this->Text = L"Form2";
    this->Load += gcnew System::EventHandler(this, &Form2::Form2_Load);
    this->ResumeLayout(false);
    }
    #pragma endregion
    private: System::Void Form2_Load(System::Object^  sender, System::EventArgs^  e) {
    }
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    this->Hide();
    otherform->Show();
    }
    };
    ////////////////////////
    }
  3. 0
    ///////////////////////Form1.h
    #pragma once
    #include "stdafx.h"
    #include "Form2.h"
    namespace Form1 {
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    ///<summary>
    ///Summary for Form1
    ///</summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
    Form1(void)
    {
    InitializeComponent();
    //
    //TODO: Add the constructor code here
    //
    }
    protected:
    ///<summary>
    ///Clean up any resources being used.
    ///</summary>
    ~Form1()
    {
    if (components)
    {
    delete components;
    }
    }
    private: System::Windows::Forms::Button^  button1;
    protected: 
    private:
    ///<summary>
    ///Required designer variable.
    ///</summary>
    System::ComponentModel::Container ^components;
    #pragma region Windows Form Designer generated code
    ///<summary>
    ///Required method for Designer support - do not modify
    ///the contents of this method with the code editor.
    ///</summary>
    void InitializeComponent(void)
    {
    this->button1 = (gcnew System::Windows::Forms::Button());
    this->SuspendLayout();
    //
    //button1
    //
    this->button1->Location = System::Drawing::Point(140, 206);
    this->button1->Name = L"button1";
    this->button1->Size = System::Drawing::Size(75, 23);
    this->button1->TabIndex = 0;
    this->button1->Text = L"Login";
    this->button1->UseVisualStyleBackColor = true;
    this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
    //
    //Form1
    //
    this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    this->ClientSize = System::Drawing::Size(377, 291);
    this->Controls->Add(this->button1);
    this->Name = L"Form1";
    this->Text = L"Form1";
    this->ResumeLayout(false);
    }
    #pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    Form2 ^ frm2 = gcnew Form2(this);
    frm2->Show();
    this->Hide();
    }
    };

    }

Dejar respuesta

Please enter your comment!
Please enter your name here