Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Windows Form Won't Display in Debug Mode

I recently upgraded to VS 2012. I have a set of coded UI tests that I've coded in VS 2010 and I'm trying to spin them up in VS 2012. I have a windows form that I'm displaying at the beginning of the test run by using the AssemblyInitialize attribute. I use this form to allow users to select from sets of values and those values are used to data feed the tests. Here's a copy of my code that displays the form:

[AssemblyInitialize]
public static void AssemblyInitialize(TestContext context)
{
    ProcessUtility.TerminateAll();
    if (!File.Exists(Directory.GetCurrentDirectory() + @"\RunInfo.ser"))
    {
        InitializeForm initForm = new InitializeForm();
        initForm.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
        initForm.ShowDialog();
    }
}

So, here's my headache: the form displays just fine in Run mode. However, if I try to spin it up in Debug mode, it never displays. I've stepped through the code. It's loading all of the controls for the form with no errors. I make it to the 'initForm.ShowDialog()' line of code. It runs that line of code but then nothing happens. I don't receive any errors and the status in the lower left of the IDE is 'Ready'. It's almost as if the IDE thinks the form is displayed but it's not. I've double-checked the Task Manager and it's just not there. I've verified the build configuration is set to Debug. I've tried cleaning the solution and re-building. This code continues to work in VS 2010. Please tell me someone out there has ran into a similar problem because I'm out of ideas. I'm new to stackoverflow so let me know if there is anything else I can provide to better explain the issue. Thank you in advance for taking a look at it.

like image 354
user2635491 Avatar asked Dec 09 '25 10:12

user2635491


2 Answers

Not sure why this solution works, but I was able to solve this issue in VS2013 by setting the visible property on the form I was trying to display to true and then false before calling ShowDialog.

VB.Net example code

Dim form as Form = new Form
form.Visible = True
form.Visible = False
form.ShowDialog
like image 114
Jeffrey P Avatar answered Dec 12 '25 00:12

Jeffrey P


I was able to get the form to display using the following code instead of ShowDialog. I still have no idea why ShowDialog wasn't working but this does the trick:

InitializeForm initForm = new InitializeForm();
initForm.Visible = true;
initForm.Focus();
Application.Run(initForm);
like image 39
user2635491 Avatar answered Dec 12 '25 00:12

user2635491



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!