private Bitmap GetBitmap(string bitmapName) { try { return(DpiHelper.GetBitmapFromIcon(typeof(DataGridParentRows), bitmapName)); } catch (Exception e) { Debug.Fail("Failed to load bitmap: " + bitmapName, e.ToString()); return(null); } }
// =------------------------------------------------------------------ // = Methods // =------------------------------------------------------------------ /// <include file='doc\DataGridRow.uex' path='docs/doc[@for="DataGridRow.GetBitmap"]/*' /> /// <devdoc> /// <para>Gets the bitmap associated with the row.</para> /// </devdoc> protected Bitmap GetBitmap(string bitmapName) { try { return(DpiHelper.GetBitmapFromIcon(typeof(DataGridCaption), bitmapName)); } catch (Exception e) { Debug.Fail("Failed to load bitmap: " + bitmapName, e.ToString()); throw e; } }
private void ThreadExceptionDialog_DpiChanged(object sender, DpiChangedEventArgs e) { if (expandImage != null) { expandImage.Dispose(); } expandImage = DpiHelper.GetBitmapFromIcon(GetType(), DownBitmapName); if (collapseImage != null) { collapseImage.Dispose(); } collapseImage = DpiHelper.GetBitmapFromIcon(GetType(), UpBitmapName); ScaleBitmapLogicalToDevice(ref expandImage); ScaleBitmapLogicalToDevice(ref collapseImage); detailsButton.Image = detailsVisible ? collapseImage : expandImage; }
public virtual void AddStandardItems() { // // Create items // MoveFirstItem = new ToolStripButton(); MovePreviousItem = new ToolStripButton(); MoveNextItem = new ToolStripButton(); MoveLastItem = new ToolStripButton(); PositionItem = new ToolStripTextBox(); CountItem = new ToolStripLabel(); AddNewItem = new ToolStripButton(); DeleteItem = new ToolStripButton(); ToolStripSeparator separator1 = new ToolStripSeparator(); ToolStripSeparator separator2 = new ToolStripSeparator(); ToolStripSeparator separator3 = new ToolStripSeparator(); // // Set up strings // // Default to lowercase for null name, because C# dev is more likely to create controls programmatically than // vb dev. char ch = string.IsNullOrEmpty(Name) || char.IsLower(Name[0]) ? 'b' : 'B'; MoveFirstItem.Name = ch + "indingNavigatorMoveFirstItem"; MovePreviousItem.Name = ch + "indingNavigatorMovePreviousItem"; MoveNextItem.Name = ch + "indingNavigatorMoveNextItem"; MoveLastItem.Name = ch + "indingNavigatorMoveLastItem"; PositionItem.Name = ch + "indingNavigatorPositionItem"; CountItem.Name = ch + "indingNavigatorCountItem"; AddNewItem.Name = ch + "indingNavigatorAddNewItem"; DeleteItem.Name = ch + "indingNavigatorDeleteItem"; separator1.Name = ch + "indingNavigatorSeparator"; separator2.Name = ch + "indingNavigatorSeparator"; separator3.Name = ch + "indingNavigatorSeparator"; MoveFirstItem.Text = SR.BindingNavigatorMoveFirstItemText; MovePreviousItem.Text = SR.BindingNavigatorMovePreviousItemText; MoveNextItem.Text = SR.BindingNavigatorMoveNextItemText; MoveLastItem.Text = SR.BindingNavigatorMoveLastItemText; AddNewItem.Text = SR.BindingNavigatorAddNewItemText; DeleteItem.Text = SR.BindingNavigatorDeleteItemText; CountItem.ToolTipText = SR.BindingNavigatorCountItemTip; PositionItem.ToolTipText = SR.BindingNavigatorPositionItemTip; CountItem.AutoToolTip = false; PositionItem.AutoToolTip = false; PositionItem.AccessibleName = SR.BindingNavigatorPositionAccessibleName; // // Set up images // Bitmap moveFirstImage = DpiHelper.GetBitmapFromIcon(typeof(BindingNavigator), "BindingNavigator.MoveFirst"); Bitmap movePreviousImage = DpiHelper.GetBitmapFromIcon(typeof(BindingNavigator), "BindingNavigator.MovePrevious"); Bitmap moveNextImage = DpiHelper.GetBitmapFromIcon(typeof(BindingNavigator), "BindingNavigator.MoveNext"); Bitmap moveLastImage = DpiHelper.GetBitmapFromIcon(typeof(BindingNavigator), "BindingNavigator.MoveLast"); Bitmap addNewImage = DpiHelper.GetBitmapFromIcon(typeof(BindingNavigator), "BindingNavigator.AddNew"); Bitmap deleteImage = DpiHelper.GetBitmapFromIcon(typeof(BindingNavigator), "BindingNavigator.Delete"); MoveFirstItem.Image = moveFirstImage; MovePreviousItem.Image = movePreviousImage; MoveNextItem.Image = moveNextImage; MoveLastItem.Image = moveLastImage; AddNewItem.Image = addNewImage; DeleteItem.Image = deleteImage; MoveFirstItem.RightToLeftAutoMirrorImage = true; MovePreviousItem.RightToLeftAutoMirrorImage = true; MoveNextItem.RightToLeftAutoMirrorImage = true; MoveLastItem.RightToLeftAutoMirrorImage = true; AddNewItem.RightToLeftAutoMirrorImage = true; DeleteItem.RightToLeftAutoMirrorImage = true; MoveFirstItem.DisplayStyle = ToolStripItemDisplayStyle.Image; MovePreviousItem.DisplayStyle = ToolStripItemDisplayStyle.Image; MoveNextItem.DisplayStyle = ToolStripItemDisplayStyle.Image; MoveLastItem.DisplayStyle = ToolStripItemDisplayStyle.Image; AddNewItem.DisplayStyle = ToolStripItemDisplayStyle.Image; DeleteItem.DisplayStyle = ToolStripItemDisplayStyle.Image; // // Set other random properties // PositionItem.AutoSize = false; PositionItem.Width = 50; // // Add items to strip // Items.AddRange(new ToolStripItem[] { MoveFirstItem, MovePreviousItem, separator1, PositionItem, CountItem, separator2, MoveNextItem, MoveLastItem, separator3, AddNewItem, DeleteItem, }); }
/// <summary> /// Initializes a new instance of the <see cref='System.Windows.Forms.ThreadExceptionDialog'/> class. /// </summary> public ThreadExceptionDialog(Exception t) { if (DpiHelper.IsScalingRequirementMet) { scaledMaxWidth = LogicalToDeviceUnits(MAXWIDTH); scaledMaxHeight = LogicalToDeviceUnits(MAXHEIGHT); scaledPaddingWidth = LogicalToDeviceUnits(PADDINGWIDTH); scaledPaddingHeight = LogicalToDeviceUnits(PADDINGHEIGHT); scaledMaxTextWidth = LogicalToDeviceUnits(MAXTEXTWIDTH); scaledMaxTextHeight = LogicalToDeviceUnits(MAXTEXTHEIGHT); scaledButtonTopPadding = LogicalToDeviceUnits(BUTTONTOPPADDING); scaledButtonDetailsLeftPadding = LogicalToDeviceUnits(BUTTONDETAILS_LEFTPADDING); scaledMessageTopPadding = LogicalToDeviceUnits(MESSAGE_TOPPADDING); scaledHeightPadding = LogicalToDeviceUnits(HEIGHTPADDING); scaledButtonWidth = LogicalToDeviceUnits(BUTTONWIDTH); scaledButtonHeight = LogicalToDeviceUnits(BUTTONHEIGHT); scaledButtonAlignmentWidth = LogicalToDeviceUnits(BUTTONALIGNMENTWIDTH); scaledButtonAlignmentPadding = LogicalToDeviceUnits(BUTTONALIGNMENTPADDING); scaledDetailsWidthPadding = LogicalToDeviceUnits(DETAILSWIDTHPADDING); scaledDetailsHeight = LogicalToDeviceUnits(DETAILSHEIGHT); scaledPictureWidth = LogicalToDeviceUnits(PICTUREWIDTH); scaledPictureHeight = LogicalToDeviceUnits(PICTUREHEIGHT); scaledExceptionMessageVerticalPadding = LogicalToDeviceUnits(EXCEPTIONMESSAGEVERTICALPADDING); } string messageFormat; string messageText; Button[] buttons; bool detailAnchor = false; WarningException w = t as WarningException; if (w != null) { messageFormat = SR.ExDlgWarningText; messageText = w.Message; if (w.HelpUrl == null) { buttons = new Button[] { continueButton }; } else { buttons = new Button[] { continueButton, helpButton }; } } else { messageText = t.Message; detailAnchor = true; if (Application.AllowQuit) { if (t is System.Security.SecurityException) { messageFormat = SR.ExDlgSecurityErrorText; } else { messageFormat = SR.ExDlgErrorText; } buttons = new Button[] { detailsButton, continueButton, quitButton }; } else { if (t is System.Security.SecurityException) { messageFormat = SR.ExDlgSecurityContinueErrorText; } else { messageFormat = SR.ExDlgContinueErrorText; } buttons = new Button[] { detailsButton, continueButton }; } } if (messageText.Length == 0) { messageText = t.GetType().Name; } if (t is System.Security.SecurityException) { messageText = string.Format(messageFormat, t.GetType().Name, Trim(messageText)); } else { messageText = string.Format(messageFormat, Trim(messageText)); } StringBuilder detailsTextBuilder = new StringBuilder(); string newline = "\r\n"; string separator = SR.ExDlgMsgSeperator; string sectionseparator = SR.ExDlgMsgSectionSeperator; if (Application.CustomThreadExceptionHandlerAttached) { detailsTextBuilder.Append(SR.ExDlgMsgHeaderNonSwitchable); } else { detailsTextBuilder.Append(SR.ExDlgMsgHeaderSwitchable); } detailsTextBuilder.Append(string.Format(CultureInfo.CurrentCulture, sectionseparator, SR.ExDlgMsgExceptionSection)); detailsTextBuilder.Append(t.ToString()); detailsTextBuilder.Append(newline); detailsTextBuilder.Append(newline); detailsTextBuilder.Append(string.Format(CultureInfo.CurrentCulture, sectionseparator, SR.ExDlgMsgLoadedAssembliesSection)); foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) { AssemblyName name = asm.GetName(); string fileVer = SR.NotAvailable; try { if (name.EscapedCodeBase != null && name.EscapedCodeBase.Length > 0) { Uri codeBase = new Uri(name.EscapedCodeBase); if (codeBase.Scheme == "file") { fileVer = FileVersionInfo.GetVersionInfo(NativeMethods.GetLocalPath(name.EscapedCodeBase)).FileVersion; } } } catch (System.IO.FileNotFoundException) { } detailsTextBuilder.Append(string.Format(SR.ExDlgMsgLoadedAssembliesEntry, name.Name, name.Version, fileVer, name.EscapedCodeBase)); detailsTextBuilder.Append(separator); } detailsTextBuilder.Append(string.Format(CultureInfo.CurrentCulture, sectionseparator, SR.ExDlgMsgJITDebuggingSection)); if (Application.CustomThreadExceptionHandlerAttached) { detailsTextBuilder.Append(SR.ExDlgMsgFooterNonSwitchable); } else { detailsTextBuilder.Append(SR.ExDlgMsgFooterSwitchable); } detailsTextBuilder.Append(newline); detailsTextBuilder.Append(newline); string detailsText = detailsTextBuilder.ToString(); Graphics g = message.CreateGraphicsInternal(); Size textSize = new Size(scaledMaxWidth - scaledPaddingWidth, int.MaxValue); if (DpiHelper.IsScalingRequirementMet && Label.UseCompatibleTextRenderingDefault == false) { // we need to measure string using API that matches the rendering engine - TextRenderer.MeasureText for GDI textSize = Size.Ceiling(TextRenderer.MeasureText(messageText, Font, textSize, TextFormatFlags.WordBreak)); } else { // if HighDpi improvements are not enabled, or rendering mode is GDI+, use Graphics.MeasureString textSize = Size.Ceiling(g.MeasureString(messageText, Font, textSize.Width)); } textSize.Height += scaledExceptionMessageVerticalPadding; g.Dispose(); if (textSize.Width < scaledMaxTextWidth) { textSize.Width = scaledMaxTextWidth; } if (textSize.Height > scaledMaxHeight) { textSize.Height = scaledMaxHeight; } int width = textSize.Width + scaledPaddingWidth; int buttonTop = Math.Max(textSize.Height, scaledMaxTextHeight) + scaledPaddingHeight; Form activeForm = Form.ActiveForm; if (activeForm == null || activeForm.Text.Length == 0) { Text = SR.ExDlgCaption; } else { Text = string.Format(SR.ExDlgCaption2, activeForm.Text); } AcceptButton = continueButton; CancelButton = continueButton; FormBorderStyle = FormBorderStyle.FixedDialog; MaximizeBox = false; MinimizeBox = false; StartPosition = FormStartPosition.CenterScreen; Icon = null; ClientSize = new Size(width, buttonTop + scaledButtonTopPadding); TopMost = true; pictureBox.Location = new Point(scaledPictureWidth / 8, scaledPictureHeight / 8); pictureBox.Size = new Size(scaledPictureWidth * 3 / 4, scaledPictureHeight * 3 / 4); pictureBox.SizeMode = PictureBoxSizeMode.StretchImage; if (t is System.Security.SecurityException) { pictureBox.Image = SystemIcons.Information.ToBitmap(); } else { pictureBox.Image = SystemIcons.Error.ToBitmap(); } Controls.Add(pictureBox); message.SetBounds(scaledPictureWidth, scaledMessageTopPadding + (scaledMaxTextHeight - Math.Min(textSize.Height, scaledMaxTextHeight)) / 2, textSize.Width, textSize.Height); message.Text = messageText; Controls.Add(message); continueButton.Text = SR.ExDlgContinue; continueButton.FlatStyle = FlatStyle.Standard; continueButton.DialogResult = DialogResult.Cancel; quitButton.Text = SR.ExDlgQuit; quitButton.FlatStyle = FlatStyle.Standard; quitButton.DialogResult = DialogResult.Abort; helpButton.Text = SR.ExDlgHelp; helpButton.FlatStyle = FlatStyle.Standard; helpButton.DialogResult = DialogResult.Yes; detailsButton.Text = SR.ExDlgShowDetails; detailsButton.FlatStyle = FlatStyle.Standard; detailsButton.Click += new EventHandler(DetailsClick); Button b = null; int startIndex = 0; if (detailAnchor) { b = detailsButton; expandImage = DpiHelper.GetBitmapFromIcon(GetType(), DownBitmapName); collapseImage = DpiHelper.GetBitmapFromIcon(GetType(), UpBitmapName); if (DpiHelper.IsScalingRequirementMet) { ScaleBitmapLogicalToDevice(ref expandImage); ScaleBitmapLogicalToDevice(ref collapseImage); } b.SetBounds(scaledButtonDetailsLeftPadding, buttonTop, scaledButtonWidth, scaledButtonHeight); b.Image = expandImage; b.ImageAlign = ContentAlignment.MiddleLeft; Controls.Add(b); startIndex = 1; } int buttonLeft = (width - scaledButtonDetailsLeftPadding - ((buttons.Length - startIndex) * scaledButtonAlignmentWidth - scaledButtonAlignmentPadding)); for (int i = startIndex; i < buttons.Length; i++) { b = buttons[i]; b.SetBounds(buttonLeft, buttonTop, scaledButtonWidth, scaledButtonHeight); Controls.Add(b); buttonLeft += scaledButtonAlignmentWidth; } details.Text = detailsText; details.ScrollBars = ScrollBars.Both; details.Multiline = true; details.ReadOnly = true; details.WordWrap = false; details.TabStop = false; details.AcceptsReturn = false; details.SetBounds(scaledButtonDetailsLeftPadding, buttonTop + scaledButtonTopPadding, width - scaledDetailsWidthPadding, scaledDetailsHeight); details.Visible = detailsVisible; Controls.Add(details); if (DpiHelper.IsScalingRequirementMet) { DpiChanged += ThreadExceptionDialog_DpiChanged; } }