Khuram Shahzad Ответов: 1

Как остановить закрытие всего приложения при закрытии формы окна xcool


у меня есть такой проект, как CMS... я работаю над ним.... у меня есть добавить тему xcool ....
здесь есть 50 оконных форм
но теперь проблема заключается в том, что при закрытии одного окна формы закрывается все приложение..
в чем проблема?... Когда я удаляю эту тему, она работает хорошо.
я не нахожу никакого метода закрытия темы.и т.д. Пожалуйста, помогите мне кто-нибудь


Это не простая оконная форма..... я применяю на ней тему.... я также много раз пробовал Form.FormClosing event (или подобное)....

я закрываю форму одного окна(тема применяется), закрывая все приложение...в то время как если бы я удалил тему из него, она работала бы хорошо... но когда применяется тема, то это создает проблемы..

Пожалуйста, помогите мне, я использую темы отсюда... https://www.codeproject.com/articles/33716/WebControls/?fid=1536616&df=90&mpp=25&sort=Position&view=Normal&spc=Relaxed&fr=71&prof=True#usingcode


Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;
using System.IO;
namespace CampusManagement
{
    public partial class YearMonthSet :XCoolForm.XCoolForm
    {
        public YearMonthSet()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
             try
                 {
                     // comboBox3.Items.Clear();//   MessageBox.Show("" + prft);
                     SqlConnection con = new SqlConnection("user id=;" +
                                      "password=;server=localhost\\SQLEXPRESS;" +
                                      "Trusted_Connection=yes;" +
                                      "database=CMS; " +
                                      "connection timeout=30");
                     con.Open();
                     ////////////////////YMCode///////////////
                     ///////////////////////////////////////////////////////for year month code ////////////////////////////////

                     SqlCommand cmd03 = con.CreateCommand();
                     cmd03.CommandText = "SELECT [YMCode]  FROM [CMS].[dbo].[YearMonth] where [YCode]=" + comboBox1.SelectedValue + " and [MCode]=" + comboBox5.SelectedValue + "";
                     SqlDataReader dr;
                     dr = cmd03.ExecuteReader();
                     dr.Read();
                     string ymcode = dr.GetValue(0).ToString();
                     Global.YMcode1 = ymcode.ToString();
                     Global.Yeaar1 = comboBox1.Text;
                     Global.Month1 = comboBox5.Text;
                     MessageBox.Show("Year Month Changed Successfully! ");
                     dr.Close();
                     this.Hide();
                 }
             catch (Exception ee)
             {
                 MessageBox.Show("Error! " + ee.ToString());

             }
             label4.Text =Global.Month1+ Global.Yeaar1.ToString();
           
        }
        private XmlThemeLoader xtl = new XmlThemeLoader();
        private void YearMonthSet_Load(object sender, EventArgs e)
        {
            
            this.TitleBar.TitleBarBackImage = CampusManagement.Properties.Resources.predator_256x256;
            this.MenuIcon = CampusManagement.Properties.Resources.alien_vs_predator_3_48x48.GetThumbnailImage(24, 24, null, IntPtr.Zero);
            xtl.ThemeForm = this;
            this.Border.BorderStyle = XCoolForm.X3DBorderPrimitive.XBorderStyle.Flat;
            this.TitleBar.TitleBarBackImage = CampusManagement.Properties.Resources.Mammooth_1;
            this.TitleBar.TitleBarCaption = "Campus Management System";
            xtl.ApplyTheme(Path.Combine(Environment.CurrentDirectory, @"..\..\Themes\BlueWinterTheme.xml"));
           
            label4.Text = Global.Month1 + Global.Yeaar1.ToString();
            // TODO: This line of code loads data into the 'cMSDataSetMonth.Month' table. You can move, or remove it, as needed.
            this.monthTableAdapter.Fill(this.cMSDataSetMonth.Month);
            // TODO: This line of code loads data into the 'cMSDataSetYear.Year' table. You can move, or remove it, as needed.
            this.yearTableAdapter.Fill(this.cMSDataSetYear.Year);

        }

Khuram Shahzad

Это не простая оконная форма ...... я применяю на ней тему .....я также попробовал приложение.Run(new Main()); много раз ....

я закрываю форму одного окна(тема применяется), закрывая все приложение...в то время как если бы я удалил тему, она работала бы хорошо... но когда применяется тема, то это создает проблемы..

Пожалуйста, помогите мне

Richard Deeming

cmd03.CommandText = "SELECT [YMCode] FROM [CMS].[dbo].[YearMonth] where [YCode]=" + comboBox1.SelectedValue + " and [MCode]=" + comboBox5.SelectedValue + "";


Не делай этого так! Ваш код почти наверняка уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

cmd03.CommandText = "SELECT [YMCode] FROM [CMS].[dbo].[YearMonth] where [YCode]=@YCode and [MCode]=@MCode";
cmd03.Parameters.AddWithValue("@YCode", comboBox1.SelectedValue);
cmd03.Parameters.AddWithValue("@MCode", comboBox5.SelectedValue);

Richard Deeming

И пока вы исправляете вещи, начните давать своим элементам управления значимые имена, а не принимать имя Visual Studio по умолчанию для всего.

Конечно, вы можете вспомнить, что comboBox42 представляет сейчас Но когда вы вернетесь, чтобы отредактировать свой код через несколько недель, вы будете проклинать человека, который его написал!

Khuram Shahzad

Пожалуйста, помогите мне, я использую темы отсюда... https://www.codeproject.com/articles/33716/WebControls/?fid=1536616&df=90&mpp=25&sort=Position&view=Normal&spc=Relaxed&fr=71&prof=True#usingcode

1 Ответов

Рейтинг:
4

OriginalGriff

Когда вы закрываете первую форму, которая открывается в Main метод (в Program.cs) через Application.Run он существует метод Run и возвращается в Main, который затем завершает работу и завершает работу приложения, освобождая все используемые им ресурсы, что также означает закрытие всех открытых окон. Вы не можете предотвратить это, и вы также не должны хотеть этого, потому что если вы этого не сделаете, то не будет никакого способа закрыть все приложение и очистить его из памяти.

Что я бы предложил для обработки события Form.FormClosing (или аналогичного), которое позволяет вам вызвать диалоговое окно "Вы уверены, что хотите закрыть это приложение?", и если пользователь не хочет использовать свойство Cancel EventArgs для отмены закрытия формы, то он не выйдет из приложения.


Khuram Shahzad

Это не простая оконная форма ...... я применяю на ней тему .....я также попробовал приложение.Run(new Main()); много раз ....

я закрываю форму одного окна(тема применяется), закрывая все приложение...в то время как если бы я удалил тему, она работала бы хорошо... но когда применяется тема, то это создает проблемы..

Пожалуйста, помогите мне

CHill60

Это простая форма окна, независимо от того, применена ли к нему тема или нет. Вы закрываете первую форму, которая была открыта в основном методе, а затем закроете все приложение. Если Вы нам не верите, то поставьте точку останова на этом коде и смотрите.

Khuram Shahzad

я верю, дорогая....
но все равно это не работает

CHill60

Если вы все еще не можете заставить его работать, почему вы приняли решение?

Khuram Shahzad

я не принял никакого решения... :)

Khuram Shahzad

Пожалуйста, помогите мне, я использую темы отсюда... https://www.codeproject.com/articles/33716/WebControls/?fid=1536616&df=90&mpp=25&sort=Position&view=Normal&spc=Relaxed&fr=71&prof=True#usingcode

CHill60

1-голосовать против, чтобы указать любым другим читателям этого поста, что @OriginalGriff прав в том, что он говорит в своем решении - за исключением опечатки, но мы отпустим его за это ;-)

OriginalGriff

Я рад этому - мой мозг иногда опережает мои пальцы ... :смеяться:

CHill60

Обратите внимание, что ОП утверждает, что они не приняли ваше решение, но оно "стало зеленым"

OriginalGriff

"Светло - зеленый", а не "полный зеленый" - означает "принято голосами", а не "принято ОП".

CHill60

Ну, этого я никогда не знал! Овации

Khuram Shahzad

Пожалуйста, помогите мне, я использую темы отсюда... https://www.codeproject.com/articles/33716/WebControls/?fid=1536616&df=90&mpp=25&sort=Position&view=Normal&spc=Relaxed&fr=71&prof=True#usingcode

Khuram Shahzad

Пожалуйста, помогите мне, я использую темы отсюда... https://www.codeproject.com/articles/33716/WebControls/?fid=1536616&df=90&mpp=25&sort=Position&view=Normal&spc=Relaxed&fr=71&prof=True#usingcode