|
Thanks for your reply.
Hi,
I have problems in using multi-threading.
What I want to do is as follow,
1. The main thread running the main window GUI as window form
which can accept user input all the time.
2. The second thread running some task,
and after the task is finished, the thread need to ask
main window form(controlled by the main thread) to display some
child window. But I find that the child window will not function
properly as two threads try to control the same GUI at the same time.
So I want to pass the control from the second thread to the main thread
and let the main thread open the child window itself.
Then how can I do that ? I don't want to use Thread.Join since the main thread need to run all the time and cannot be blocked.
Thanks
|
|
|
|
|
You shouldn`t create the new window in the separate thread. Give your main form a function which gets all info needed to create the child window and then call this function from your worker thread by calling Invoke with the new function on the main form. Invoke will transfer the call from any thread into the GUI thread.
All GUI related things should be done in one thread.
|
|
|
|
|
Hi,
Do anyone know will DDE(dynamic data exchange) still be supported
in window longhorn ?
Thank
|
|
|
|
|
I can't imagine why not.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Coz there are always articles saying that DDE is dead,
or just a residue from early window os. So I just afraid
it will be eliminated from future window version.
|
|
|
|
|
COM is, to all extents, dead. But I'm sure the OS will support it, forever. Why make a ton of old code not run anymore, for no good reason ?
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
what is longhorn i have listened to this term but still today i have no knowledge about it
|
|
|
|
|
The next version of window
|
|
|
|
|
Longhorn is the codename for the next generation of Windows, now called Windows Vista.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
hi,
i wld like to create any app whereby the user is free to press any buttons 1-10 simultaneously and the forms belonging to the respective buttons will be displayed.. eg. when u hit button 1, form 1 will be displayed.. when button 3 is hit, form 3 will display.. however, as my app should allow simultaneous displaying of forms, i cannot use modal forms.. with non-modal forms, too many forms will be displayed and it'll be irritating to look at the computer screen..
** i wld like to allow the user to display many non-modal forms n be able to select among the forms that are displayed, just like many windows can be displayed on the taskbar when i click on many types of icons on the desktop and allows the user to choose the window he wants to do his work..
** is it possible to know which buttons were pressed n allow the respective forms to be displayed in a 2nd form of tabpages? can tabpages be used to display information as if they are windows?
pls let me noe if u've better ideas to display many non-modal forms and in a neat manner instead of displaying so many pop-ups in the screen.. thanks..
many thanks for your answers/suggestions.. =)
|
|
|
|
|
nidhelp wrote:
pls let me noe if u've better ideas to display many non-modal forms and in a neat manner instead of displaying so many pop-ups in the screen.. thanks..
noe ? Goodness me.
A nom-modal form IS a popup, no two ways about it. Perhaps the only way to do it is to limit the number of forms visible at a time, or have your code that responds to the button presses move the forms so they are logically aligned with one another on the screen.
nidhelp wrote:
** is it possible to know which buttons were pressed n allow the respective forms to be displayed in a 2nd form of tabpages?
Absolutely - so you have a single modeless dialog and you add/remove tab pages as someone presses buttons ? Why not just have a form with the 10 tab pages ? You get the same result, except it's more logical to use.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
sorry but i don exactly get u.. do u mean i can display my forms in tabpages? do u mean the tabpage will automatically add/remove as n when the buttons are pressed/forms are closed by the user?
** i hope it is indeed possible for tabpages to be automatically enabled/disabled by effect of clicking more n more buttons/closing forms that are displayed.. i hope u get what im trying to explain..
by the way, im tryin to do this.. i've a main menu form for my app.. this form is divided into 2 parts.. the left side consists of tabpages with these 10 buttons.. the right side consists of tabpages where i want the forms to be displayed in when the user clicks on the buttons at the right of the form.. however, i do not know how/what to code to display the forms in the tabpage.. currently the forms are being displayed as pop-ups all across my screen when i click on the buttons.. how should i modify my codes?
any better idea is appreciated n i really thank u for your help! =)
|
|
|
|
|
nidhelp wrote:
sorry but i don exactly get u.. do u mean i can display my forms in tabpages? do u mean the tabpage will automatically add/remove as n when the buttons are pressed/forms are closed by the user?
Yeah, that's what you asked. You could create a dialog with a tab control on it, and expose methods to add/remove tab pages to call on button presses.
I don't believe you can turn a form into a tab page, I think you need to design them as tab pages to start with, on the control.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
can u go into more details like how do i create a tab control on the forms? ** i need some code examples to show me how to display a form in a tabpage.. any idea?
sorry im really new to c# n im still learning how the codes work for my app... sorry for the trouble.. thanks again =)
|
|
|
|
|
nidhelp wrote:
can u go into more details like how do i create a tab control on the forms?
You drag it onto a form in the designer.
Then you add tab pages to the control in the properties. You end up with member variables for the tab control and the pages. Something like this:
if (tabControl1.TabPages.Contains(tabPage1))
{
tabControl1.TabPages.Remove(tabPage1);
}
else
{
tabControl1.TabPages.Add(tabPage1);
}
will remove tabPag1 if it's there, or add it if it's not. You will not lose state in the pages through hiding/showing, but their order will change. So you add event handlers which you hook up to the buttons on the main page, and when you press a button, a tab page appears or disappears.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
hmmmm.. so wat u've just typed is to allow tab page to appear or disappear depending on button press am i right? i hope i get wat u mean in your replies.. sorry if u r feeling frustrated wif all my questions..
** i still do not noe how to pop up a form IN a tab page.. can u teach me? i nid to research in books n online and ask people regarding my individual proj so i really appreciate your help.. thanks so much! =)
|
|
|
|
|
nidhelp wrote:
so wat u've just typed is to allow tab page to appear or disappear depending on button press am i righ
Yes, that's what I said, and what you asked. Did you try it ? I created a project, that code works for sure.
nidhelp wrote:
i still do not noe how to pop up a form IN a tab page..
If it can be done, it will be by creating the form and adding it to the tab pages controls collection. It's a hack though, you should set out the form on the tab page. I told you that already.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
I want to modify control from one form to another already opened form. how can I do this?
thank you...
|
|
|
|
|
Within the same app ? Modify how ? What do you want exactly ?
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
In the same app, and modify a property of a control. for example: modify the tag property of a listbox.
|
|
|
|
|
Expose a property that does what you want, and call it.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
This is what I couldn't do.
I made form1.listbox1 as public, then I tried to use from form2: form1.listbox1
but i don't have .listbox1 in the list of form1. how can I do this?
|
|
|
|
|
Anonymous wrote:
I made form1.listbox1 as public
Don't - that's terrible design.
Anonymous wrote:
then I tried to use from form2: form1.listbox1
So form1 is the variable that holds an instance of the form1 in question ? It's a floating dialog ?
Anonymous wrote:
how can I do this?
I'd say the problem is that you're typing in the class name, which won't work, you'll only see static methods there. You need to have an instance of the form in order to change it's properties. Which means you should have a member variable for a dialog you're about to show, or a modeless dialog. Then you can set properties on it, but properties of controls will only work if the form has been created and is visible. Otherwise, they need to be stored and acted on in the event handling cycle of the form being created and shown.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
its a terrible design, but I'm working on sombody else code, and its the fastest way.
form2 is a floating dialog. form1 is already open. I don't know how can I have an instance of the form, I know only how to have a new instance of form:
someform varForm = new someform();
|
|
|
|
|
Anonymous wrote:
its a terrible design, but I'm working on sombody else code, and its the fastest way.
Bad design is ALWAYS the fastest way, why else would anyone write crap code ?
So you want to change something in form1, from form2 ? From what you said you tried, you're obviously lost at sea. A form is a class, and you can have multiple instances of that class. To change something in an instance, you need to have that instance, or a reference to it. Seeing as you're looking for quick and ugly, you can make Form2's constructor take an instance of Form1, and pass in this when you create form2. Then you need to store that variable in Form2 and you can set it's properties.
OR, if you want to spend 30 seconds doing it properly, define a delegate in Form2, and when you create it, set the delegate to call a function in Form1. Then Form2 can notify Form1 of events in a nice, OO manner.
Christian Graus - Microsoft MVP - C++
|
|
|
|