|
red60mans wrote: Application.Run(new Form1());
This is irrelevant
red60mans wrote: Form1 f = new Form1();
f.Close();
If you want to close the current instance of Form1, call this.Close(). Creating a new instance of form1 has no bearing on any other instance that exists.
red60mans wrote: Form2 r = new Form2();
r.Visible = true;
This plain won't work, as I said.
red60mans wrote: This ia modeless form
Your main form cannot be modeless.
red60mans wrote: I tried r.show() also
its not working
Define 'not working' ? If you call Show(), you should make your form a member variable. Only forms for which you call 'showdialog' should be created in the scope of a method.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
I should add, your main form must continue to exist, so you need to hide it, if that's what you want, not close it. That will close your program. Also, you may want to define the two forms as controls, then you can hide/show controls if you want a UI that jumps between two forms.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
i am a newbie so bear with me.
Form1::
public void Bttn_Click(object sender, EventArgs e)
{
Form2 r = new Form2();
r.Show();
this.Hide();
}
This works fine for this form ie Form1
as u have said that it is not necessary to create one more instance of Form1 and rather use this.hide().
but i have one more event in Form2 called Form2Button_click event where i need to hide form2 and show Form1. Now if i create a Form1 instance as shown below i will have two instances of Form1. One which was hidden using previous code and Second instance in the Form2 button click event.
public Form2Button_click(object sender, EventArgs e)
{
Form1 newInstanceForm1 = new Form1();
newInstanceForm1 .Show();
this.Hide();
}
1)How do i access Form1 from Form2 without creating a new instance of Form1??
or how do i get hold of the original Form1 instance from Form2
2)You have also said that it is better to create two Forms as controls......where do i create those controls??
i have only two forms Form1 being the main form. So do i need to create these forms as controls in main()??
i am just confused
Any help is appreciated,
yojimbo
|
|
|
|
|
The easiest way of doing that is to modify your Form2 constructor to take a Form1 reference, that you then keep until you need it.
Form1:
public void Bttn_Click(object sender, EventArgs e)
{
Form2 r = new Form2(this);
r.Show();
this.Hide();
} Form2:
private Form1 myf1;
public Form2(Form1 f1)
{
...
myf1 = f1;
}
public Form2Button_click(object sender, EventArgs e)
{
myf1.Show();
this.Hide();
}
Internet - the worlds biggest dictionary
|
|
|
|
|
red60mans wrote: How do i access Form1 from Form2 without creating a new instance of Form1??
You can't create a new instance, it won't access the old one. The Application object does have a collection of open forms, you could find it there. You could also pass it in, as has been suggested. You could use a delegate to make Form2 tell form1 to wake up. Your best bet IMO is still to create both forms as controls, and embedd them on the one form.
red60mans wrote: where do i create those controls??
You create new user controls, and design them the same as you would a form. Then you put both controls on your form, and write some plumbing code to make sure one or the other is always visible.
red60mans wrote: So do i need to create these forms as controls in main()??
You'd create them as controls in the designer, and then add them to your form
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
I am having trouble writing a C program for the space elevator problem. If any of you know how to solve this problem please write me the codes so I could check them against my codes.
Thanks
|
|
|
|
|
Uhhhh..."The Space Elevator Problem"? To what do you refer?? Also, if you're looking for code for such a specific problem, your best source would be Google.
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
wrote: please write me the codes so I could check them against my codes
Right, I'm sure you wrote anything. I guess your elevator doesn't go to the top.
BTW this is the C# forum, not the C forum.
-- modified at 20:23 Wednesday 7th February, 2007
only two letters away from being an asset
|
|
|
|
|
There's a bug at the moment, some new members don't get names.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
Interesting. Then I withdraw my complaint.
only two letters away from being an asset
|
|
|
|
|
Do you mean C, C++, or C# ? This is the C# forum.
Also, I have no idea what the 'space elevator' problem is, but you need to post your code before anyone is going to do your homework for you.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
I hosted grid in a usercontrol and the usercontrol is hosted in Tab, something like
TabPage->UserControl->Grid
When i come out of the Grid. Grid's Leave event is not firing.
Any Ideas?
Thanks
kumar
|
|
|
|
|
It won't fire on your Form? Of course not. It won't go any further that firing inside your UserControl. If you want the event to be visible outside your UserControl, you'll have to handle the event in the UserControl and reraise an a new event from your UserControl code.
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
but Grid's Leave event is firing when i am moving from one Tabpage to another tabpage.
To each tab page's control collection a usercontrol is getting added at run-time. And usercontrol adds Grid at runtime to its control collection.
|
|
|
|
|
Hi guys,
Requesting kindly for your help.
I have a 3 listboxes in my form, my first listbox allows multiple selection and second allows just one. I am trying to do the following: Move to the third box:
Selection 1 from box 1 + Selection 1 from box 2 to box 3
selection 2 from box 1 + selection 1 from box 2 to box 3
continue until all selections from box 1 are moved.
I can't figure out how to clearselected in box one and increment to the next selection in box 1.
Please help!
sasa
|
|
|
|
|
Hello, I'm using C# 2.0 generics in an application I'm writing and I have a question about copying one list to another.
The List<> generic doesn't seem to have a deep copy method. It has CopyTo() but this copies to an array, not to a List<>.
Suppose I have a large list of objects:
main()
{
List<MyClass> original = new List<MyClass>();
// add 10000 MyClass objects to original...
// ...<snip>...
List<MyClass> backup = new List<MyClass>();
ShallowCopy<MyClass>(original, backup);
}
static void ShallowCopy<T>(List<T> source, List<T> dest)
{
dest.Clear();
foreach(T t in source)
{
dest.Add(t);
}
}
OK, this gives me a shallow copy, but what if I want a deep copy? It doesn't look like there's a deep copy built into generics... or what am I missing?
Thanks,
Jeff
-- modified at 17:27 Wednesday 7th February, 2007
|
|
|
|
|
I know someone here asked exactly the same thing about a combo box but i tried and it didn't work, i have a treeview that contains process names and i want to check if a process exists there before i add it, i tried something like this and it didn't work:
<br />
Process[] a = Process.GetProcesses();<br />
for (int i = 0; i < a.Length; i++)<br />
{<br />
TreeNode mb = new TreeNode(a[i].ProcessName);<br />
if (!(treeView1.Nodes.Contains(mb)))<br />
treeView1.Nodes.Add(a[i].ProcessName);<br />
}<br />
Any suggestions?
|
|
|
|
|
ummm... you create a "new" TreeNode and then ask the Tree if it contains it? Why do think that would work?
led mike
|
|
|
|
|
Oh...well...is there a way to check if a string exists in a treeview? (that's what i thought i was doing o_O), as in the node names?
|
|
|
|
|
The simplest is to iterate through the nodes comparing Texts.
Better is to put the process Id in the Tag field and compare those.
On the other hand, if you also need to remove Nodes from the TreeView when the process ends how do you do that? What I do in cases like that is simply Clear the TreeView and add all the current Nodes.
|
|
|
|
|
I'm using a timer which checks it but there's the problem, i need to check if a process exists before adding it to the treeview...and can anyone give an example since i have very little experience with treeviews.
And about the response about not checking the child nodes - that's because there are none, only roots.
|
|
|
|
|
Imho, the most time (not space) efficient way to do this is to maintain a temporary parallel list of entries which you can check against (using .Contains() ) before attempting to add an entry ito the treeview.
/ravi
|
|
|
|
|
What you tried fails because treeView1.Nodes includes only the root nodes of the treeview. i.e. not the children of the root nodes.
One way is to recursively check for the item:
if (!NodePresent(treeView1.Nodes, mb))
{
//do your stuff
}
private bool NodePresent(TreeNodeCollection Nodes, TreeNode node)
{
if (Nodes.Contains(node))
return true;
foreach (Treenode treeNode in Nodes)
{
if(IsFolder(treeNode) && NodePresent(treeNode.Nodes, node))
return true;
}
return false;
}
private bool IsFolder(TreeNode node)
{
// Use the image index, node.Nodes.Count or a method of your choosing to determine whether child nodes may be present
}
Good Luck!
|
|
|
|
|
Hello everyone,
I have created a window application using Visual C#. I wish to set the window property as the width and hight are resized together rather than indivitually. What I mean by that is "I wish to width/hight" ratio stays same when a user try to change the width or hight.
Could you guys tell me how I can do that please?
Thank you for your time,
Khoramdin
|
|
|
|
|
Uhh, it's not a realy complicated solution but how about making two integers which contain the start window size and then after each resize (resize event) do like:
int SizeThingy = CurrentWidth - StartWidth;
CurrentHeight += SizeThingy;
and make the height CurrentHeight
the best solution i could think of (and the simplest one).
|
|
|
|