Solved

c# window title setting from arbitrary panel

Posted on 2010-09-10
7
585 Views
Last Modified: 2013-12-17
Hi Experts,
I'm looking for something like AfxGetMainWnd in c# so that I can set the window title.  I'm in a panel and this panel could be in another panel or in a child window, etc.....  Is there a way to do this in c#?

Thanks!
Mike
0
Comment
Question by:thready
  • 2
  • 2
  • 2
  • +1
7 Comments
 
LVL 12

Expert Comment

by:w00te
ID: 33647720
Application.OpenForms[0].Text = "Hello.";

should always refer to your first opened form, the applicaiton window.  That will change the title to "Hello."

Good luck :)
-w00te
0
 
LVL 63

Accepted Solution

by:
Fernando Soto earned 500 total points
ID: 33647769
Hi thready;

Because Application.OpenForms is a collection of all open forms in the application the first one in the collection may not be the one you want to change. so use this form to get a reference to the correct window.
 
Form openForms = Application.OpenForms["Form Name Goes Here"];

Fernando
0
 
LVL 12

Expert Comment

by:w00te
ID: 33647798
Oh, and just in case for some reason [0] doens't refer to your main form you can use this to change the title based on the type of form (assuming you only have one of your main form open at any time).  If you have multiple of the same form, you can change getType() and typeof() and use Name == "your form name" to explicitly target a specific form you've made by name.  If this were your main form though, its started in your program file and allocated without a name, you would have to save the name or explicitly name it and pass it in to use the name method.

I think the first post will cover the problem though :)

-w00te
for (int i = 0; i < Application.OpenForms.Count; ++i)
            {
                if (Application.OpenForms[i].GetType() == typeof(Form1))
                {
                    Application.OpenForms[i].Text = "Hello.";
                    break;
                }
            }

Open in new window

0
Forrester Webinar: xMatters Delivers 261% ROI

Guest speaker Dean Davison, Forrester Principal Consultant, explains how a Fortune 500 communication company using xMatters found these results: Achieved a 261% ROI, Experienced $753,280 in net present value benefits over 3 years and Reduced MTTR by 91% for tier 1 incidents.

 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 33647875
Do you just want the "active" form?

    Form.ActiveForm.Text = "Hello!";

Or the current form?

    this.Text = "Hello!";
0
 
LVL 1

Author Comment

by:thready
ID: 33648427
I want only the main window (the one that opens as soon as my app starts)...
0
 
LVL 1

Author Closing Comment

by:thready
ID: 33648481
Thank you - this is what I was looking for!
0
 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 33648529
You could STORE the reference to your starting form as a static member in program.cs:

    static class Program
    {

        public static Form MainForm = null;

        ///
        /// The main entry point for the application.
        ///
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Program.MainForm = new Form1();
            Application.Run(Program.MainForm);
        }

    }

Now you can use "Program.MainForm" from anywhere in the app:

        private void button1_Click(object sender, EventArgs e)
        {
            Program.MainForm.Text = "Hello Starting Form!";
        }
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial

735 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question