diff -urN pnetlib-0.6.6.orig/System.Drawing/Graphics.cs pnetlib-0.6.6.new/System.Drawing/Graphics.cs
--- pnetlib-0.6.6.orig/System.Drawing/Graphics.cs	2004-03-13 01:17:18.000000000 +0100
+++ pnetlib-0.6.6.new/System.Drawing/Graphics.cs	2004-05-31 14:00:21.000000000 +0200
@@ -1364,6 +1364,17 @@
 					return;
 				if (format == null)
 					format = new StringFormat();
+                                // HotKeyPrefix: Hide
+                                if (format.HotkeyPrefix == System.Drawing.Text.HotkeyPrefix.Hide)
+                                {
+                                  int HotKeyIdx = s.IndexOf('&');
+                                  if ( HotKeyIdx != -1 &&  ( HotKeyIdx >= s.Length-1 || Char.IsControl(s[HotKeyIdx])))
+                                    HotKeyIdx = -1;
+                                  if ( HotKeyIdx != -1 )
+                                  {
+                                     s = s.Substring(0,HotKeyIdx) + s.Substring(HotKeyIdx+1);
+                                  }
+                               }                        
 				Point[] rect = ConvertRectangle
 					(layoutRectangle.X + baseWindow.X, layoutRectangle.Y + baseWindow.Y,
 					 layoutRectangle.Width - 1, layoutRectangle.Height - 1, pageUnit);
@@ -1415,7 +1426,31 @@
 								rect[0].Y = rect[2].Y - (int)size.Height - 1;
 						}
 
-						ToolkitGraphics.DrawString(s, rect[0].X, rect[0].Y, format);
+                                       // Hotkeyprefix: Show
+                                       if (format.HotkeyPrefix == System.Drawing.Text.HotkeyPrefix.Show)
+                                       {
+                                             int HotKeyIdx = s.IndexOf('&');
+                                             if ( HotKeyIdx != -1 &&  ( HotKeyIdx >= s.Length-1 || Char.IsControl(s[HotKeyIdx])))
+                                                  HotKeyIdx = -1;
+                                             String start_string = "";
+                                             String end_string = "";
+                                             String hotkey = "";
+                                             if ( HotKeyIdx != -1 )
+                                             {
+                                                 start_string = s.Substring(0 , HotKeyIdx);
+                                                 end_string = s.Substring(HotKeyIdx+1);
+                                                 hotkey = s.Substring(HotKeyIdx,1);
+                                             }
+                                             SizeF SizeStart = MeasureString(start_string, font);
+                                             Font new_font = new Font (font, font.Style | FontStyle.Underline);
+                                             SizeF SizeHotkey = MeasureString(hotkey,new_font);
+                                             SelectFont(font);                             
+                                             ToolkitGraphics.DrawString(start_string, rect[0].X, rect[0].Y, format);                             
+                                             ToolkitGraphics.DrawString(end_string,rect[0].X+(int)(SizeStart.Width+SizeHotkey.Width), rect[0].Y, format);
+	                         	     SelectFont(new_font);
+                                             ToolkitGraphics.DrawString(hotkey,rect[0].X+(int)SizeStart.Width, rect[0].Y, format);
+                                       } else
+				             ToolkitGraphics.DrawString(s, rect[0].X, rect[0].Y, format);
 					}
 					if (clipTemp != null)
 						Clip = clipTemp;
@@ -2105,6 +2140,7 @@
 		private Font font;
 		private RectangleF layout;
 		private StringFormat format;
+                private int HotKeyIdx;
 
 		// Details for each word
 		private  struct SplitWord
@@ -2129,6 +2165,19 @@
 					this.font = font;
 					this.layout = layout;
 					this.format = format;
+                                        // Hotkeyprefix
+                                        this.HotKeyIdx = -1;
+                                        if(format.HotkeyPrefix == System.Drawing.Text.HotkeyPrefix.Show)
+                                        {                                           
+					     HotKeyIdx = text.IndexOf('&');
+                                             if ( HotKeyIdx != -1 )                                            
+                                               if ( HotKeyIdx >= text.Length-1 ||
+                                                    Char.IsControl(text[HotKeyIdx]))
+                                                   HotKeyIdx = -1;
+                                               else                                             
+                                                   this.text = text.Substring(0,HotKeyIdx) +
+                                                               text.Substring(HotKeyIdx + 1);
+                                        }                        
 				}
 
 		public void LayoutByWords()
@@ -2222,8 +2271,29 @@
 						// Draw if some of it is within layout.
 						if(linePosition.X <= layout.Right && linePosition.Y <= layout.Bottom)
 						{
+                                                       // Hotkeyprefix: Show
+                                                       if (HotKeyIdx >= textStart && HotKeyIdx < textStart+textLength)
+                                                       {
+                                                          String start_string = text.Substring(textStart, 
+                                                                                     HotKeyIdx -  textStart );
+                                                          String end_string = text.Substring(HotKeyIdx+1, 
+                                                                                   textLength - (HotKeyIdx -textStart) -1);
+                                                          graphics.ToolkitGraphics.DrawString(start_string, linePosition.X, linePosition.Y, null);  
+                                                          Font new_font = new Font (font, font.Style | FontStyle.Underline);
+                                                          SizeF SizeStart = graphics.MeasureString(start_string,font);
+                                                          SizeF SizeHotKey = graphics.MeasureString(text.Substring(HotKeyIdx,1),new_font);
+                                                          graphics.SelectFont(font);
+                                                          graphics.ToolkitGraphics.DrawString(end_string,
+                                                                linePosition.X+(int)(SizeStart.Width+SizeHotKey.Width), linePosition.Y, null);
+	         	                                  graphics.SelectFont(new_font);
+                                                          graphics.ToolkitGraphics.DrawString(text.Substring(HotKeyIdx,1),
+                                                                linePosition.X+(int)SizeStart.Width, linePosition.Y, null);
+							  graphics.SelectFont(font);
+                                                       } else
+                                                       {
 							String lineText = text.Substring(textStart, textLength);
 							graphics.ToolkitGraphics.DrawString(lineText, linePosition.X, linePosition.Y, null);
+                                                       }
 						}
 						textStart = word.start;
 						textLength = word.length;
