[Mono-winforms-list] set_Value seems to be having a problem

Emery Conrad econrad at vt.edu
Tue Apr 18 15:45:37 EDT 2006


All, it appears the issue comes through ScrollBar.set_SmallChange =
Font.Height, which eventually goes back through Font.Height <--
Graphics.systemDpiY <-- Graphics.FromImage(new Bitmap(1,1)).DpiY <--
GDIPlus.GetImageGraphicsContext... I'm trying to find the bottom of the
rabbit hole...

Who knows this code best... I'll keep trying to uncover it, but a pointer
would be nice! (I'm having fun hacking though...)

Emery


On 4/18/06, Emery Conrad <econrad at vt.edu> wrote:
>
> I've run into the same issue repeatedly over the last several iterations
> of releases... in 1.1.9.2, this bug wasn't there. When I change the code
> to give the values of max and min for the scroll bar, they are both set to
> -214783648. Somewhere, one of the calculations (maybe thumb_area?) is off.
>
> I've just starting my digging into the ScrollBar code... probably someone
> else will figure this out before me!!
>
> Emery
>
>
>
> On 4/18/06, PFJ <paul at all-the-johnsons.co.uk> wrote:
> >
> > Hi,
> >
> > I have a small image viewer which has been working for quite a while
> > now. However, I've just come to run it and it throws up an error after
> > loading a jpeg
> >
> > Unhandled Exception: System.ArgumentException : '-214783648' not a valid
> > value for 'Value'. 'Value' should be between 'Minimum' and 'Maximum'
> > <in 0x00163> System.Windows.Forms.ScrollBar:set_Value(Int32 value)
> >
> > The jpeg is a valid jpeg (displays in eye of gnome)
> >
> > Any ideas what is happening? Source code and throwback is attached.
> >
> > As always, I'm happy to BZ this and admit now that the problem could
> > either be in my head, on my machine, or not be anything at all because
> > I'm a twit at times.
> >
> > mono compiled from source (svn) at about 10.30 British Summer Time
> >
> > TTFN
> >
> > Paul
> >
> > 8-->
> > /*
> > * ImageViewer.cs - Simple MDI-based image viewer.
> > *
> > * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
> > *
> > * This program is free software, you can redistribute it and/or modify
> > * it under the terms of the GNU General Public License as published by
> > * the Free Software Foundation, either version 2 of the License, or
> > * (at your option) any later version.
> > *
> > * This program is distributed in the hope that it will be useful,
> > * but WITHOUT ANY WARRANTY, without even the implied warranty of
> > * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > * GNU General Public License for more details.
> > *
> > * You should have received a copy of the GNU General Public License
> > * along with this program, if not, write to the Free Software
> > * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
> > USA
> > */
> >
> > using System;
> > using System.IO;
> > using System.Drawing;
> > using System.Drawing.Drawing2D;
> > using System.Windows.Forms;
> >
> > public class ImageViewer : Form
> > {
> >         private ImageViewer()
> >         {
> >                 MenuItem openMenuItem = new MenuItem("Open");
> >                 MenuItem quitMenuItem = new MenuItem("Quit");
> >                 MenuItem fileMenuItem =
> >                         new MenuItem("File", new MenuItem[]
> >                                 {openMenuItem, quitMenuItem});
> >                 MainMenu mainMenu = new MainMenu(new MenuItem[] {
> > fileMenuItem });
> >                 Menu = mainMenu;
> >
> >                 Size = new Size(600, 500);
> >                 Text = "DotGNU Image Viewer";
> >                 IsMdiContainer = true;
> >
> >                 openMenuItem.Click += new EventHandler(OpenClicked);
> >                 quitMenuItem.Click += new EventHandler(QuitClicked);
> >         }
> >
> >         private void OpenClicked(Object sender, EventArgs e)
> >         {
> >                 OpenFileDialog dialog = new OpenFileDialog();
> >                 dialog.Filter =
> >                         "All image files (*.bmp, *.jpg, *.png, *.gif,
> > *.ico, *.cur)" +
> >                         "|*.bmp;*.jpg;*.png;*.gif;*.ico;*.cur" +
> >                         "|BMP files (*.bmp)|*.bmp" +
> >                         "|JPEG files (*.jpg)|*.jpg" +
> >                         "|PNG files (*.png)|*.png" +
> >                         "|GIF files (*.gif)|*.gif" +
> >                         "|Icon files (*.ico)|*.ico" +
> >                         "|Cursor files (*.cur)|*.cur" +
> >                         "|All files (*.*)|*.*";
> >                 if(dialog.ShowDialog(this) == DialogResult.OK)
> >                 {
> >                         Bitmap image;
> >                         try
> >                         {
> >                                 image = new Bitmap( dialog.FileName);
> >                         }
> >                         catch(Exception)
> >                         {
> >                                 MessageBox.Show
> >                                         (String.Format ("Unknown image
> > format for \"{0}\"",
> >
> > dialog.FileName),
> >                                          "Error", MessageBoxButtons.OK ,
> > MessageBoxIcon.Hand);
> >                                 image = null;
> >                         }
> >                         if(image != null)
> >                         {
> >                                 ImageWindow window = new ImageWindow
> >                                         (dialog.FileName, image);
> >                                 window.MdiParent = this;
> >                                 window.Visible = true;
> >                         }
> >                 }
> >         }
> >
> >         private void QuitClicked(Object sender, EventArgs e)
> >         {
> >                 Close();
> >         }
> >
> >         protected override bool ProcessDialogKey(Keys keyData)
> >         {
> >                 if(keyData == (Keys.Control | Keys.O))
> >                 {
> >                         OpenClicked(this, EventArgs.Empty);
> >                         return true;
> >                 }
> >                 return base.ProcessDialogKey(keyData);
> >         }
> >
> >         public static void Main(String[] args)
> >         {
> >                 ImageViewer form = new ImageViewer();
> >                 Application.Run(form);
> >         }
> >
> > }
> >
> > internal class ImageWindow : Form
> > {
> >         private Image image;
> >
> >         public ImageWindow(String filename, Image image)
> >         {
> >                 this.image = image;
> >                 ClientSize = image.Size;
> >                 Text = Path.GetFileName(filename);
> >         }
> >
> >         protected override void OnPaint(PaintEventArgs args)
> >         {
> >                 args.Graphics.DrawImage(image, 0, 0);
> >         }
> >
> > }
> >
> >
> > Unhandled Exception: System.ArgumentException: '-2147483648' is not a
> > valid value for 'Value'. 'Value' should be between 'Minimum' and
> > 'Maximum'
> > in <0x00163> System.Windows.Forms.ScrollBar:set_Value (Int32 value)
> > in (wrapper remoting-invoke-with-check)
> > System.Windows.Forms.ScrollBar:set_Value (int)
> > in <0x00131> System.Windows.Forms.MdiClient:CalcHBar (Int32 left, Int32
> > right, Int32 right_edge, Boolean vert_vis)
> > in <0x007d7> System.Windows.Forms.MdiClient:SizeScrollBars ()
> > in <0x0000a> System.Windows.Forms.MdiClient:FormLocationChanged
> > (System.Object sender, System.EventArgs e)
> > in (wrapper delegate-invoke)
> > System.MulticastDelegate:invoke_void_object_EventArgs
> > (object,System.EventArgs)
> > in <0x0002e> System.Windows.Forms.Control:OnLocationChanged
> > (System.EventArgs e)
> > in <0x0016a> System.Windows.Forms.Control:UpdateBounds (Int32 x, Int32
> > y, Int32 width, Int32 height, Int32 clientWidth, Int32 clientHeight)
> > in <0x00149> System.Windows.Forms.Control:UpdateBounds ()
> > in <0x00375> System.Windows.Forms.Control:WndProc
> > (System.Windows.Forms.Message m)
> > in <0x0000d> System.Windows.Forms.ScrollableControl:WndProc
> > (System.Windows.Forms.Message m)
> > in <0x0000d> System.Windows.Forms.ContainerControl:WndProc
> > (System.Windows.Forms.Message m)
> > in <0x00370> System.Windows.Forms.Form:WndProc
> > (System.Windows.Forms.Message m)
> > in <0x00014> System.Windows.Forms.Control+ControlNativeWindow:WndProc
> > (System.Windows.Forms.Message m)
> > in <0x0011e> System.Windows.Forms.NativeWindow:WndProc (IntPtr hWnd, Msg
> > msg, IntPtr wParam, IntPtr lParam)
> > in <0x00013> System.Windows.Forms.XplatUIX11:SendMessage (IntPtr hwnd,
> > Msg message, IntPtr wParam, IntPtr lParam)
> > in <0x0024e> System.Windows.Forms.XplatUIX11:SetVisible (IntPtr handle,
> > Boolean visible)
> > in <0x0001a> System.Windows.Forms.XplatUI:SetVisible (IntPtr handle,
> > Boolean visible)
> > in <0x0007d> System.Windows.Forms.Control:SetVisibleCore (Boolean value)
> > in <0x0000f> System.Windows.Forms.Form:SetVisibleCore (Boolean value)
> > in <0x00013> System.Windows.Forms.Control:set_Visible (Boolean value)
> > in (wrapper remoting-invoke-with-check)
> > System.Windows.Forms.Control:set_Visible (bool)
> > in <0x00144> ImageViewer:OpenClicked (System.Object sender,
> > System.EventArgs e)
> > in (wrapper delegate-invoke)
> > System.MulticastDelegate:invoke_void_object_EventArgs
> > (object,System.EventArgs)
> > in <0x0001d> System.Windows.Forms.MenuItem:OnClick (System.EventArgs e)
> > in <0x00010> System.Windows.Forms.MenuItem:PerformClick ()
> > in (wrapper remoting-invoke-with-check)
> > System.Windows.Forms.MenuItem:PerformClick ()
> > in <0x00377> System.Windows.Forms.MenuTracker:OnClick
> > (System.Windows.Forms.MouseEventArgs args)
> > in <0x00e61> System.Windows.Forms.Form:WndProc
> > (System.Windows.Forms.Message m)
> > in <0x00014> System.Windows.Forms.Control+ControlNativeWindow:WndProc
> > (System.Windows.Forms.Message m)
> > in <0x0011e> System.Windows.Forms.NativeWindow:WndProc (IntPtr hWnd, Msg
> > msg, IntPtr wParam, IntPtr lParam)
> > in <0x00016> System.Windows.Forms.XplatUIX11:DispatchMessage
> > (System.Windows.Forms.MSG msg)
> > in <0x00015> System.Windows.Forms.XplatUI:DispatchMessage
> > (System.Windows.Forms.MSG msg)
> > in <0x005fe> System.Windows.Forms.Application:RunLoop (Boolean Modal,
> > System.Windows.Forms.ApplicationContext context)
> > in <0x00024> System.Windows.Forms.Application:Run
> > (System.Windows.Forms.Form mainForm)
> > in <0x00024> ImageViewer:Main (System.String [] args)
> > <--8
> >
> > --
> > "Logic, my dear Zoe, is merely the ability to be wrong with authority" -
> > Dr Who
> >
> > _______________________________________________
> > Mono-winforms-list maillist  -   Mono-winforms-list at lists.ximian.com
> > http://lists.ximian.com/mailman/listinfo/mono-winforms-list
> >
>
>
>
> --
> Emery Conrad
> Department of Mathematics
> Virginia Tech
> 5076 Derring Hall
> Blacksburg, VA 24061-0406
> (540) 231-3324
>



--
Emery Conrad
Department of Mathematics
Virginia Tech
5076 Derring Hall
Blacksburg, VA 24061-0406
(540) 231-3324
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-winforms-list/attachments/20060418/a15fbe9a/attachment-0001.html


More information about the Mono-winforms-list mailing list