Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

нужно, чтобы 2 формы были активны

2.1K
09 июня 2007 года
госик
98 / / 20.11.2006
Запускаю программу. Вижу форму. Выбераю в меню определенный пункт, вылетает еще одна форма. После этого мне нужно, чтобы можно было с ними работать одновременно (т.е. не закрывать вторую, чтобы продолжить работать в первой). Например, как в Windows мы можем одновременно работать с 2 и более приложениями одновременно.

и все можно скинуть сюда первый релиз проги... если кому интересно :)
8.4K
09 июня 2007 года
TZA Group
120 / / 10.04.2007
С двумя формами можно работать с помощью кода
имя Формы.Show(); првда есть одно но.Если закрыть дочерную форму
2 раз её уже не откроешь.Будет вылетать ошибка с текстом Can not access deposited object(кажется такая)
Но есть ещё 1 код
Имя формы.ShowDialog(this);
Есди ползоваться им то работать в главной форме пока вторая открыта станет невозможным.Но зато при таком коде ,когда закроешь 2 форму, то потом она спакойно откроется.

:)
274
09 июня 2007 года
Lone Wolf
1.3K / / 26.11.2006
Хм не знаю как там в .НЕТе, но скажу как это Джаве, может на мыслю на толкнет. При создании диалога, в конструкторе просто указывается, что он не есть модальным, т.е. не блокирует родителькское окно, вот и все... я дума в .НЕТе должна быть. аналогичная конструкция
8.4K
09 июня 2007 года
TZA Group
120 / / 10.04.2007
Цитата: Lone Wolf
При создании диалога, в конструкторе просто указывается, что он не есть модальным, т.е. не блокирует родителькское окно, вот и все...


Ты прав.Можно и так , но если во 2 окне нажать Х (Закрыть его)
То при повторном вызове 2 окна прога даст сбой т.к закрывая 2 окно мы выполняем функцию dellete.

274
09 июня 2007 года
Lone Wolf
1.3K / / 26.11.2006
Хм.. странно, опять же рассуждаю с точки зрения JAVA. здела я dispose() на окно хорошо, оно уничтожилось. Вызываю снова new MySecondWindow() - создаю новый езкемпляр класса и новое окно, то никаких проблем не должно быть. В .НЕТе не так?
8.4K
09 июня 2007 года
TZA Group
120 / / 10.04.2007
Нет...К сожелению...После уничтожения окна dotNET его больше не видит.А на любом коде который обращается к нему либо срабатывает catch
либо нечего не проиходит.
274
09 июня 2007 года
Lone Wolf
1.3K / / 26.11.2006
Хм.. т.е. при выполнении программы я могу создавать только по одному екземпляру каждого класса? Или в dotNET-е окна это не классы? и имеют некую другую реализацию
8.4K
09 июня 2007 года
TZA Group
120 / / 10.04.2007
СТОП!!!НАШЁЛ!!!
Вот код
Просто объявляем форму как новый класс.
#include "Form2.h"
Form2 = new forma;
forma.Show();
:D
274
09 июня 2007 года
Lone Wolf
1.3K / / 26.11.2006
воо я про это и говорил ))
8.4K
09 июня 2007 года
TZA Group
120 / / 10.04.2007
Чуть не забыл!
public:Form2^ forma;

public обезательно (НЕ "private")
8.4K
09 июня 2007 года
TZA Group
120 / / 10.04.2007
Цитата: Lone Wolf
воо я про это и говорил ))



Да да! Твоя идея ! ;)

2.1K
09 июня 2007 года
госик
98 / / 20.11.2006
ну не знаю.
я делаю так:
public Questions quest;
потом:
quest = new Questions();
а потом использовала ShowDialog (первая форма блокируется), и если использовать Show, то вторично открыть форму нельзя.
Как у вас то получилось?
8.4K
09 июня 2007 года
TZA Group
120 / / 10.04.2007
Знаешь почему 2 форма блокируется, потому что мы при её закрытии автомато удаляем её из памяти.
8.4K
09 июня 2007 года
TZA Group
120 / / 10.04.2007
После тог как мы закрыли 2 форму, в первой пишем(к примеру на button1_click)
Значит пишем.
forma = new Form2;
forma.Show();
8.4K
09 июня 2007 года
TZA Group
120 / / 10.04.2007
И эта форма генерируется заного.Потом её сново вожно открывать функцией Show() (Естественно сного на оди раз :) Пока её заного не сгенерируешь)
Попробуй.
8.4K
09 июня 2007 года
TZA Group
120 / / 10.04.2007
Код:
#pragma once
#include "Form2.h"

namespace Form2Class {

    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
    ///
    /// WARNING: If you change the name of this class, you will need to change the
    ///          'Resource File Name' property for the managed resource compiler tool
    ///          associated with all .resx files this class depends on.  Otherwise,
    ///          the designers will not be able to interact properly with localized
    ///          resources associated with this form.
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: Add the constructor code here
            //
            forma = gcnew Form2;
        }

    protected:
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  button1;
    protected:
    private: System::Windows::Forms::Button^  button2;
    private: Form2^ forma;

    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->button2 = (gcnew System::Windows::Forms::Button());
            this->SuspendLayout();
            //
            // button1
            //
            this->button1->Location = System::Drawing::Point(65, 52);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(75, 23);
            this->button1->TabIndex = 0;
            this->button1->Text = L"button1";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
            //
            // button2
            //
            this->button2->Location = System::Drawing::Point(103, 128);
            this->button2->Name = L"button2";
            this->button2->Size = System::Drawing::Size(75, 23);
            this->button2->TabIndex = 1;
            this->button2->Text = L"button2";
            this->button2->UseVisualStyleBackColor = true;
            this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
            //
            // Form1
            //
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(292, 266);
            this->Controls->Add(this->button2);
            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)
             {
                 this->forma->Show();
             }
    private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e)
             {
                 forma = gcnew Form2;
             }
    };
}


Это ПОЛНЫЙ Код Form1.h
+zip Файл.Сама форма.
Генерируем 2 класс при нажатии button2
с помощью функции Show (на 1 раз)
8.4K
09 июня 2007 года
TZA Group
120 / / 10.04.2007
P.S. Форма написана не на С# а на С++.
2.1K
10 июня 2007 года
госик
98 / / 20.11.2006
Так :) вроде получилось то, что я хотела!
Спасибо! :)
8.4K
10 июня 2007 года
TZA Group
120 / / 10.04.2007
Незачто.Вот кстати 1 вещь.Предположим ты нажала на кнопку (пусть button1)Где написан код
forma.Show();
В конце кода кнопки нужно ещё преписать
forma = new Form2;
И когда ты закроешь 2 форму то, при повторном нажатии button1(в 1 форме) 2 форма спокойно откроется!
8.4K
10 июня 2007 года
TZA Group
120 / / 10.04.2007
И ещё Почитай
http://forum.codenet.ru/private.php
242
10 июня 2007 года
Оlga
2.2K / / 04.02.2006
можно новый экзампляр класса создавать, можно, если нужно сохранить старый единственный экзампляр окна, сделать ему Hide(), вместо Close(), отловив событие закрытия окна.

Госик
просто открываешь второе окно, при этом первое закрывать не надо.
8.4K
11 июня 2007 года
TZA Group
120 / / 10.04.2007
OlgaKr. да ВЫ правы.Но тогда у этого класса нужно кнопку закрытия убирать.А не то збой....
9.0K
25 июня 2007 года
Shit_Happenes
58 / / 05.10.2006
А почему бы не сделать главную форму(далее MainForm) при открытии Hide().
Тогда другие окна можно будет открывать и закрывать легко.
В MainForm вести счетчик открытых окон и когда этот счётчик упадёт до нуля, закрыть и MainForm.
8.4K
28 июня 2007 года
TZA Group
120 / / 10.04.2007
Не выгодно.Легче заново объявить 2 форму:
Forma=gcnew Form2;
713
28 июня 2007 года
Ap0k
360 / / 13.03.2006
Выгода в попугаях?
Куда сохранять и как восстанавливать значения переменных объекта класса формы после уничтожения и повторного создания прикажете?
8.4K
29 июня 2007 года
TZA Group
120 / / 10.04.2007
Некуда!Они и не обнулятся!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог