[Mono-winforms-list] FW: [MonoDevelop] Moving Focus Between Form

Valentin Sawadski valentin.sawadski at gmx.de
Thu Sep 20 12:03:32 EDT 2007


Hello Tri,

On Wed, 2007-09-19 at 16:11 -0500, Tri_Nguyen at Dell.com wrote:
> Thanks Valentin, you are my hero.  It worked.  However, I hope you do not mind that I ask another question.  I have this routine, and every time I started in "mono" it terminate abruptly.  

I fear I have to say that I've got absolutely no clue what could be the
cause for the crash.

Could you provide some more information about what went wrong (e.g. a
stack trace or some console output)

Other than that I can only advise you to cc all your messages to the
Winforms list on mono to address a broader audience, so that someone who
actually has got an idea could also respond to your mails.

Kind Regards,
Valentin

> 
>         private void TextFonts()
>         {
>             string sFuncName = "TextFonts";
> #if !_MONO
>             Control.CheckForIllegalCrossThreadCalls = false;
> #endif
>             //this.WindowState = FormWindowState.Maximized;
>             rCA = this.ClientRectangle;
>             iArea = rCA.Width * rCA.Height;
>             float font;
>             // Create a Graphics object and set its
>             // background as the form's background
>             Graphics g = this.CreateGraphics();
>             g.Clear(this.BackColor);
>             SolidBrush blueBrush = new SolidBrush(Color.FromName(sColor[random.Next(0, 139)]));
>             Font tnrFont = null;
> 
>             for (float i = 1; i <= 1000; i += 1)
>             {
>                 if (bKenny)
>                 {
>                     bKenny = false;
>                     break;
>                 }
> 
>                 try
>                 {
>                     rCA = this.ClientRectangle;
>                     iArea = rCA.Width * rCA.Height;
>                     g = this.CreateGraphics();
>                     font = random.Next(1, 1000) * 10;
>                     // Create font and brushes
>                     tnrFont = new Font("Times New Roman", font, FontStyle.Bold, GraphicsUnit.Pixel);
>                     blueBrush = new SolidBrush(Color.FromName(sColor[random.Next(0, 139)]));
>                     g.TextRenderingHint = TextRenderingHint.SystemDefault;
> #if !_MONO
>                     // Gamma correction value 0 - 12. Default is 4.
>                     g.TextContrast = 4;
> #endif
>                     g.TextRenderingHint = TextRenderingHint.AntiAlias;
> #if !_MONO
>                     VideoPerf.Start();
> #elif _MONO
>                     timeStart = DateTime.Now;
> #endif
>                     g.DrawString("The quick brown fox jumps over a lazy dog!", tnrFont, blueBrush, new PointF(10, 3 * font));
> #if !_MONO
>                     VideoPerf.Stop();
>                     dDuration += VideoPerf.Duration(1);
> #elif _MONO
>                     timeEnd = DateTime.Now;
>                     timeDifference = timeEnd.Subtract(timeStart);
> #endif
>                     #region Get Peformnace snap shot very 1000
>                     if (i == 1000)
>                     {
>                         if (bKenny)
>                         {
>                             bKenny = false;
>                             break;
>                         }
>                         i = 1;
>                         g.Clear(Color.FromName(sColor[random.Next(0, 139)]));//this.BackColor);
> #if !_MONO
>                         dDuration /= 1000;
> #elif _MONO
>                         dDuration = timeDifference.Seconds;
> #endif
>                         dAvgTime = dDuration / (double)multiplier;
>                         dNumPixels = (int)(iArea * dAvgTime * 1000);
>                         if (bKenny)
>                         {
>                             bKenny = false;
>                             break;
>                         }
>                         this.Text = sFuncName + " [ " + String.Format("{0:0,0}", dNumPixels) + " pixels/sec ]";
>                     }
>                     #endregion
>                 }
>                 catch { }
>             }
>             // Dispose of Graphics object
>             blueBrush.Dispose();
>             if (tnrFont != null)
>             {
>                 tnrFont.Dispose();
>             }
>             g.Dispose();
>         }
> 
> Thanks.
> 
> =Tri.
> 
> -----Original Message-----
> From: Valentin Sawadski [mailto:valentin.sawadski at gmx.de] 
> Sent: Wednesday, September 19, 2007 3:34 PM
> To: Nguyen, Tri
> Subject: RE: FW: [MonoDevelop] Moving Focus Between Form
> 
> Hello Tri,
> 
> could it be that your are looking for something like that in the attachment?
> 
> And what parts of the code did you not understand, maybe I could help to answer some questions. :-)
> 
> Kind Regards,
> Valentin
> 
> On Wed, 2007-09-19 at 15:22 -0500, Tri_Nguyen at Dell.com wrote:
> > Thanks for your respond.  I am not sure if I understand your sample code 100%.  However, What I try to achieve here is to be able to stop the child form from the parent form "Stop" or "Exit" button.  I had register an event and if the "Stop" button click, it will signal the child form to close it gracefully.
> > 
> > Thanks.
> > 
> > -Tri.
> > 
> > -----Original Message-----
> > From: Valentin Sawadski [mailto:valentin.sawadski at gmx.de]
> > Sent: Wednesday, September 19, 2007 1:57 PM
> > To: Nguyen, Tri
> > Cc: mono-winforms-list at lists.ximian.com
> > Subject: Re: FW: [MonoDevelop] Moving Focus Between Form
> > 
> > Hello,
> > 
> > On Wed, 2007-09-19 at 12:36 -0500, Tri_Nguyen at Dell.com wrote:
> > > Thank you for your respond.  You are right that I am using 
> > > "Form.ShowDialog".  However, I am using it in both Windows, and Linux.
> > > The reason I am using "Form.ShowDialog" is because I want to monitor 
> > > for the return of the form.
> > > 
> > > Is there a problem with "Form.ShowDialog"?
> > 
> > No there is no problem with ShowDialog but it blocks all other Forms of the Application, like you already noticed.
> > 
> > Howerver, a workaround would be to attach a delegate to the Closed 
> > event of the Form and then read out the DialogResult manually. (See 
> > the Attachment for a short sample)
> > 
> > Kind Regards,
> > Valentin S.
> > 
> > > 
> > > Thanks.
> > > 
> > > -Tri.
> > > 
> > > -----Original Message-----
> > > From: Valentin Sawadski [mailto:valentin.sawadski at gmx.de]
> > > Sent: Wednesday, September 19, 2007 10:34 AM
> > > To: Nguyen, Tri
> > > Cc: mono-winforms-list at lists.ximian.com
> > > Subject: Re: [MonoDevelop] Moving Focus Between Form
> > > 
> > > Hello,
> > > 
> > > On Fri, 2007-09-14 at 12:41 -0500, Tri_Nguyen at Dell.com wrote:
> > > > Hi I am new to Mono, and I not sure this is a right place to ask 
> > > > this
> > > > question:
> > > > 
> > > > 1.       I am trying to port a C# Windows app to Mono running on SLES
> > > > 10.1.  The app starts with one form, and base on user input , it 
> > > > can launch other forms.  When this happens, the new form gets 
> > > > focus, and I can click on the previous form (parent?), and get 
> > > > focus.  On mono, the app behaves differently:  I cannot get focus 
> > > > back to the previous, unless I close the new form.
> > > > 
> > > > Any help on this matter would be appreciated.
> > > 
> > > As far as I know there's no bug in Form.Show, so my guess is that 
> > > you call Form.Show on Windows and changed it to Form.ShowDialog 
> > > while porting to Linux which would explain the behavior you mentioned.
> > > 
> > > However I you are sure that this is not the cause for the behavior, 
> > > then please file a bug with a repro at http://bugzilla.novell.com.
> > > 
> > > Kind Regards,
> > > Valentin S.
> > > 
> > > P.S. I cc'ed this message to the winforms list, so that more people 
> > > concerned with WinForm will notice to this issue.



More information about the Mono-winforms-list mailing list