2015-02-18 3 views
2

При загрузке формы я пытаюсь проверить, может ли мое приложение подключаться к базе данных или нет. Если он не подключается, я хочу показать окно сообщения с хорошим сообщением и закрыть приложение. Проблема, с которой я сталкиваюсь, заключается в том, что когда она пытается закрыть приложение, она попадает в событие Form_closing, которое запрашивает их «если они хотят выйти из приложения», это выглядит странно для пользователя, который не имеет доступа к приложению/для просмотра окна сообщения. Я просто хочу пропустить событие закрытия формы и просто закрыть форму, любая помощь будет принята с благодарностью.Закрытие моего приложения мешает моему событию Form1_FormClosing

private void Form1_Load(object sender, EventArgs e) 
    { 
    checkcon(); 
    } 
    private void checkcon() 
    { 
    try 
    { 
     MSSQL.SqlConnection con = new MSSQL.SqlConnection(constr); 
     con.Open(); 
     con.Close(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Your domain account does not have sufficient privilages to continue with the application please contact the IS support Team.");    
     Close(); 
    } 

    } 

    private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
    DialogResult result = MessageBox.Show("Are you sure you want to exit the application?", "Alert", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); 
    if (result == DialogResult.No) 
    { 
     e.Cancel = true; 
    } 
    else 
    { 
    } 
    } 

ответ

2

добавить статический Ий вар в качестве контрольного Wether, чтобы показать диалог или нет:

public static bool HasPermission=true; 
private void checkcon() 
    { 
    try 
    { 
     MSSQL.SqlConnection con = new MSSQL.SqlConnection(constr); 
     con.Open(); 

     con.Close(); 
    } 
    catch (Exception ex) 
    { 
     HasPermission=false; 
     MessageBox.Show("Your domain account does not have sufficient privilages to continue with the application please contact the IS support Team.");    
     Close(); 
    } 

    } 

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { if (HasPermission) 
    { 
    DialogResult result = MessageBox.Show("Are you sure you want to exit the application?", "Alert", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); 
    if (result == DialogResult.No) 
    { 
     e.Cancel = true; 
    } 
    else 
    { 
    } 
    } 
    } 
+0

Цените это, так что вы в основном объявлении статического BOOL к истинно, то ложно, если оно не находит соединение, то он попадает в FormClosing и это событие говорит, что если это правда, чем запустить это событие, то это мое понимание правильно ??? – HackMaster

+1

Правильно ... – apomene

0

Я думаю, что это очень легко.

Просто создайте переменную типа boolean и проверьте, имеет ли пользователь доступ к базе данных? Если нет, пожалуйста, закройте его без каких-либо подтверждений.

Позвольте мне объяснить вам, изменив код:

bool userGotPermissionToYourApplication = true; 

    private void Form1_Load(object sender, EventArgs e) 
    { 
    checkcon(); 
    } 
    private void checkcon() 
    { 
    try 
    { 
     MSSQL.SqlConnection con = new MSSQL.SqlConnection(constr); 
     con.Open(); 
     con.Close(); 

    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Your domain account does not have sufficient privilages to continue with the application please contact the IS support Team.");    
     userGotPermissionToYourApplication = false; 
     Close(); 
    } 

    } 

    private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
    if(userGotPermissionToYourApplication) 
    { 
     DialogResult result = MessageBox.Show("Are you sure you want to exit the application?", "Alert", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); 
     if (result == DialogResult.No) 
     { 
      e.Cancel = true; 
     } 
     else 
     { 
     } 
    } 
} 
+0

Спасибо Vishal Но apomene избили вас, и ваши решения точно такие же, и я понял концепцию. – HackMaster

+0

Ya ................. – Vishal