|
Ian,
It isn't a real simple example, but you could take a look at my Extensions to DrawTools[^] article which has the type of ability (and more) you are looking for.
In that application, the MDI parent form sets properties on the DrawArea object to communicate settings from parent to child.
HTH
Sincerely,
-Mark
mark@msdcweb.com
http://www.msdcweb.com
|
|
|
|
|
Thanks Mark,
Nice app and very usefull info for something else that I want to do but no MDI stuff in there ?
cheers
Ian
|
|
|
|
|
Ian,
The DrawTools project uses a MDI parent form - I had forgotten it doesn't use any child forms.
Try this out for a solution to your problem:
In your child form expose some public or internal properties that are set when a toolbar button in the parent form is clicked. For example:
*** child form ***
public bool isPoly;
*** parent form ***
In the toolbarButton_Click(...) event:
if (ActiveMdiChild == null) return;
var child = ActiveMdiChild as childformclass;
child.isPoly = toolbarButton.Checked;
This way the child form(s) can see when a button on the toolbar in the parent is checked or not and react accordingly.
Additionally in the parent form you will want to react when the child form changes and set the state of buttons according to the active child form:
*** parent form ***
In MdiChildActivate event:
if (ActiveMdiChild == null) return;
var child = ActiveMdiChild as childformclass;
toolbarButton.Checked = child.isPoly;
HTH
Sincerely,
-Mark
mark@msdcweb.com
http://www.msdcweb.com
|
|
|
|
|
Thanks Mark,
This was really helpfull !! I used to work in VB6 Pro and thought about moving over to C#.Net instead of VB.Net. In order to learn the new C#.Net environment it seems you have to buy a lot of books (four up to date) and do the Microsoft certified courses and still all of it only shows you bits and pieces and end up becoming very expensive.
So what I am trying to say is that the code you supplied helps me a lot in grasping whats happening.
So thanks again for your patience.
Ian
|
|
|
|
|
Ian,
You are very welcome - glad I was able to help.
I came to C# after making a living programming in Visual FoxPro for close to 10 years. I picked up some Java experience along the way as well. When I started learning .NET and C# I too bought several books - the best one for me was Windows Forms 2.0 Programming[^].
Hang in there and don't be afraid to ask questions on CodeProject - everyone here is very helpful.
Sincerely,
-Mark
mamiller@rhsnet.org
|
|
|
|
|
Thanks Mark,
The book looks good and I will amazon it soon !!
Cheers
Ian
|
|
|
|
|
ianhunt01 wrote: I have got a MDI app where one of the childforms must be able to see the status of a RadioButton on a docked panel on the MDI from.
Why? Best Practice would be for views to get their data from the Model rather than another View. See Model-View-Controller[^]
led mike
|
|
|
|
|
No,
I had a look at the Wiki and it does not tell me much in a practical way of achieving this.
But thanks in any case
Ian
|
|
|
|
|
ianhunt01 wrote: No,
I had a look at the Wiki and it does not tell me much in a practical way of achieving this.
Ok, I guess unless you can copy/paste some code you can't do it. Good luck.
led mike
|
|
|
|
|
Anyone know of a SIMPLE TO USE syntax coloring control for use in a C# WinForms application?
Everything makes sense in someone's mind
|
|
|
|
|
|
Hello friends I have a function name " private void fnSave()". I want to call this function when ever I press " Ctrl+S " button. Just like in MS Word.Can any one help me plz?
|
|
|
|
|
|
You can use KeyDown, KeyPress and KeyUp events to detect pressed keys.
Giorgi Dalakishvili
#region signature
my articles
#endregion
|
|
|
|
|
Hi Saiyed,
In MS Word the Ctrl+S key combination runs the code assigned to the File..Save menu item. It's called a shortcut key and if you are implementing menus in your application you can do this too. Shortcut keys can be assigned to menu items in the Visual Studio designer.
Alan.
|
|
|
|
|
Thank u Alan. But is it not possible to implement that without using Shortcut key in menu item?
If there is then how? All I want is just to call a function like private void fnSaveData() whenever some one press (Ctrl+S) together.
|
|
|
|
|
Hi Saiyed,
Try this in your app.
Set the KeyPreview property of the main form to true and also set a KeyDown event handler for the main form.
With these two elements in place, the main form key handler will see all keys destined for any child control on the form so it will not matter which control has focus when the user presses Ctrl + S.
You can then test specifically for Ctrl + S as shown in the code fragment.
private void MainForm_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyData == (Keys.Control | Keys.S)) {
MessageBox.Show("Key trapped" + Environment.NewLine +
e.KeyData.ToString());
e.SuppressKeyPress = true;
}
}
Just insert your save method in place of the message box code.
Alan.
|
|
|
|
|
Thank u so much Alan. It did work and it was great.Hope to know many more from u in future.
Johnny
|
|
|
|
|
How would i go about changing values in pixels in an area? Note, all pixels will have the same value.
I was thinking of using unsafe code to visit every single pixel in that area, but that may be too slow if i do this multiple time.
|
|
|
|
|
YOU CAN USE SetPixel()
Bitmap bitmap = new Bitmap(@"C://1.bmp");
Color newColor = Color.FromArgb(0, 0,100);
bitmap.SetPixel(i, j, newColor);
Vikas Amin
My First Article on CP" Virtual Serial Port "[^]
modified on Thursday, July 24, 2008 5:33 PM
|
|
|
|
|
What's an "area"?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
|
That's IT! I'm going to lunch!
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
You have two "easy" options:
* http://msdn.microsoft.com/en-us/library/system.drawing.graphics.fillrectangle.aspx[^]
* directly accessing the pixels via an unmanaged pointer in an unsafe block
I suggest you try both methods and see which one is faster.
The fastest approach would probably be to set up a DirectX graphics device and render the area using a custom pixel shader. Depending on your needs this might be a bit overkill, though.
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
I set a specific value of intensity (for greyscale) or color within that region so fillrectangle is out of the question. So i guess unsafe is the way to go.
As far as DirectX goes, I have no idea how to set it up.
To answer the question above, an "area" is considered a portion of an image. Hence an area or region.
|
|
|
|