Custom Tab Control - OnPaint vs MessageBox - Problem
Hi I will explain my problem,
I got a MDI parent form that contains many child forms. For each child form I'm trying to display a messagebox(with .show).
The issue here is that the messagebox appears over the child form, like it's supposed to, but then the child form reprints itself over the messagebox therefor hiding it. The message box still has the focus so if I press F10 it'll bring it back to the foreground.
Is there a way keep the messagebox in the foreground to begin with?
The tabcontrol I'm using come from this site : http://www.codeproject.com/Articles/...Second-Edition
Re: Custom Tab Control - OnPaint vs MessageBox - Problem
I'm not at a computer to check it, but there is the suspendlayout method which seems like it would work in this situation, just when the messagebox closes be sure to call resumelayout. That may not be the proper way, but I believe it would work for you in this case.
Re: Custom Tab Control - OnPaint vs MessageBox - Problem
it's dont change anything if i suspendLayout all my childForm.
Re: Custom Tab Control - OnPaint vs MessageBox - Problem
Forgive me if I'm being dim but what does "a MDI parent form that contains many child forms" have to do with a custom tab control?
Re: Custom Tab Control - OnPaint vs MessageBox - Problem
Sorry i have forgot to explain the tabControl.
Each ChildForm got a TabControl. If i use the System.Windows.Forms.TabControl i dont have this bug because the TabControl dont reprints itself over the messagebox.
Re: Custom Tab Control - OnPaint vs MessageBox - Problem
Ah, right. That makes it kinda tricky then since the fault is clearly the way the paint events are handled in the Tab control and it may not be possible to bypass that. Do these message boxes require a response or could they be built into the forms as text areas or as status messages? That's the only way off the top of my head that you can easily overcome the problem with certainty.
Re: Custom Tab Control - OnPaint vs MessageBox - Problem
these message box require a response , i know i can make a custom MessageBox but i dont really want that if i can bypass the bug.
Re: Custom Tab Control - OnPaint vs MessageBox - Problem
I try your MessageBoxEx, but the MessageBox never come on the top because all the TabControl reprints itself over the messagebox. I have try with BreakPoint and when the MessageBox show all the TabControl behind reprints.
Re: Custom Tab Control - OnPaint vs MessageBox - Problem
Quote:
Originally Posted by
warp123
I try your MessageBoxEx, but the MessageBox never come on the top because all the TabControl reprints itself over the messagebox. I have try with BreakPoint and when the MessageBox show all the TabControl behind reprints.
That is really weird, Nothing should draw over a TopMost window except another TopMost window that is activated.
I looked at the source code real quick and compiled it for FW 4.0, but only tried it real quick on a single form project (in Win7) and seemed to act OK.
Can you post the source code for a simple project reproducing how the control fails?
Re: Custom Tab Control - OnPaint vs MessageBox - Problem
I have make a makup for this bug. but i dont know why i cant attach my project.zip.
I will post all my code class.
Form1 :
Code:
Public Class Form1
Friend WithEvents TabControl1 As CustomTabControl
Friend WithEvents TabPage1 As System.Windows.Forms.TabPage
Friend WithEvents TabPage2 As System.Windows.Forms.TabPage
Friend WithEvents Label1 As System.Windows.Forms.Label
Public Sub New()
' The Windows Forms Designer requires the following call.
InitializeComponent()
InitializeForm()
End Sub
Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Dim res = MessageBoxEx("Save data before exit?", "MyApp - Save?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
If res = Windows.Forms.DialogResult.Cancel Then
e.Cancel = True
ElseIf res = Windows.Forms.DialogResult.Yes Then
' < add code here for Yes >
End If
End Sub
Private Sub InitializeForm()
Me.TabControl1 = New System.Windows.Forms.CustomTabControl()
Me.TabPage1 = New System.Windows.Forms.TabPage()
Me.TabPage2 = New System.Windows.Forms.TabPage()
Me.Label1 = New System.Windows.Forms.Label()
Me.TabControl1.SuspendLayout()
Me.TabPage1.SuspendLayout()
Me.SuspendLayout()
'
'TabControl1
'
Me.TabControl1.Controls.Add(Me.TabPage1)
Me.TabControl1.Controls.Add(Me.TabPage2)
'
Me.TabControl1.DisplayStyleProvider.BorderColor = System.Drawing.SystemColors.ControlDark
Me.TabControl1.DisplayStyleProvider.BorderColorHot = System.Drawing.SystemColors.ControlDark
Me.TabControl1.DisplayStyleProvider.BorderColorSelected = System.Drawing.Color.FromArgb(CType(CType(132, Byte), Integer), CType(CType(130, Byte), Integer), CType(CType(132, Byte), Integer))
Me.TabControl1.DisplayStyleProvider.CloserColor = System.Drawing.Color.DarkGray
Me.TabControl1.DisplayStyleProvider.FocusTrack = True
Me.TabControl1.DisplayStyleProvider.HotTrack = True
Me.TabControl1.DisplayStyleProvider.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.TabControl1.DisplayStyleProvider.Opacity = 1.0!
Me.TabControl1.DisplayStyleProvider.Overlap = 0
Me.TabControl1.DisplayStyleProvider.Padding = New System.Drawing.Point(6, 3)
Me.TabControl1.DisplayStyleProvider.Radius = 2
Me.TabControl1.DisplayStyleProvider.ShowTabCloser = False
Me.TabControl1.DisplayStyleProvider.TextColor = System.Drawing.SystemColors.ControlText
Me.TabControl1.DisplayStyleProvider.TextColorDisabled = System.Drawing.SystemColors.ControlDark
Me.TabControl1.DisplayStyleProvider.TextColorSelected = System.Drawing.SystemColors.ControlText
Me.TabControl1.HotTrack = True
Me.TabControl1.Location = New System.Drawing.Point(30, 12)
Me.TabControl1.Name = "TabControl1"
Me.TabControl1.SelectedIndex = 0
Me.TabControl1.Size = New System.Drawing.Size(543, 413)
Me.TabControl1.TabIndex = 0
'
'TabPage1
'
Me.TabPage1.Controls.Add(Me.Label1)
Me.TabPage1.Location = New System.Drawing.Point(4, 23)
Me.TabPage1.Name = "TabPage1"
Me.TabPage1.Padding = New System.Windows.Forms.Padding(3)
Me.TabPage1.Size = New System.Drawing.Size(535, 386)
Me.TabPage1.TabIndex = 0
Me.TabPage1.Text = "TabPage1"
Me.TabPage1.UseVisualStyleBackColor = True
'
'TabPage2
'
Me.TabPage2.Location = New System.Drawing.Point(4, 23)
Me.TabPage2.Name = "TabPage2"
Me.TabPage2.Padding = New System.Windows.Forms.Padding(3)
Me.TabPage2.Size = New System.Drawing.Size(535, 386)
Me.TabPage2.TabIndex = 1
Me.TabPage2.Text = "TabPage2"
Me.TabPage2.UseVisualStyleBackColor = True
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 20.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label1.Location = New System.Drawing.Point(205, 141)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(107, 31)
Me.Label1.TabIndex = 0
Me.Label1.Text = "Hello !!!"
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(596, 437)
Me.Controls.Add(Me.TabControl1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.TabControl1.ResumeLayout(False)
Me.TabPage1.ResumeLayout(False)
Me.TabPage1.PerformLayout()
Me.ResumeLayout(False)
End Sub
End Class
Re: Custom Tab Control - OnPaint vs MessageBox - Problem
MDIPARENT :
I have split this code in 3 because this class is too long.
Code:
Imports System.Windows.Forms
Public Class MDIParent
Private Sub ShowNewForm(ByVal sender As Object, ByVal e As EventArgs) Handles NewToolStripMenuItem.Click, NewToolStripButton.Click, NewWindowToolStripMenuItem.Click
' Créez une nouvelle instance du formulaire enfant.
Dim ChildForm As New Form1
' Configurez-la en tant qu'enfant de ce formulaire MDI avant de l'afficher.
ChildForm.MdiParent = Me
m_ChildFormNumber += 1
ChildForm.Text = "Fenêtre " & m_ChildFormNumber
ChildForm.Show()
End Sub
Private Sub OpenFile(ByVal sender As Object, ByVal e As EventArgs) Handles OpenToolStripMenuItem.Click, OpenToolStripButton.Click
Dim OpenFileDialog As New OpenFileDialog
OpenFileDialog.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments
OpenFileDialog.Filter = "Fichiers texte (*.txt)|*.txt|Tous les fichiers (*.*)|*.*"
If (OpenFileDialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then
Dim FileName As String = OpenFileDialog.FileName
' TODO: ajoutez le code ici pour ouvrir le fichier.
End If
End Sub
Private Sub SaveAsToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles SaveAsToolStripMenuItem.Click
Dim SaveFileDialog As New SaveFileDialog
SaveFileDialog.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments
SaveFileDialog.Filter = "Fichiers texte (*.txt)|*.txt|Tous les fichiers (*.*)|*.*"
If (SaveFileDialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then
Dim FileName As String = SaveFileDialog.FileName
' TODO: ajoutez le code ici pour enregistrer le contenu actuel du formulaire dans un fichier.
End If
End Sub
Private Sub ExitToolsStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ExitToolStripMenuItem.Click
Me.Close()
End Sub
Private Sub CutToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles CutToolStripMenuItem.Click
' Utilisez My.Computer.Clipboard pour insérer les images ou le texte sélectionné dans le Presse-papiers
End Sub
Private Sub CopyToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles CopyToolStripMenuItem.Click
' Utilisez My.Computer.Clipboard pour insérer les images ou le texte sélectionné dans le Presse-papiers
End Sub
Private Sub PasteToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PasteToolStripMenuItem.Click
'Utilisez My.Computer.Clipboard.GetText() ou My.Computer.Clipboard.GetData pour extraire les informations du Presse-papiers.
End Sub
Private Sub ToolBarToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ToolBarToolStripMenuItem.Click
Me.ToolStrip.Visible = Me.ToolBarToolStripMenuItem.Checked
End Sub
Private Sub StatusBarToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles StatusBarToolStripMenuItem.Click
Me.StatusStrip.Visible = Me.StatusBarToolStripMenuItem.Checked
End Sub
Private Sub CascadeToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles CascadeToolStripMenuItem.Click
Me.LayoutMdi(MdiLayout.Cascade)
End Sub
Private Sub TileVerticalToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles TileVerticalToolStripMenuItem.Click
Me.LayoutMdi(MdiLayout.TileVertical)
End Sub
Private Sub TileHorizontalToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles TileHorizontalToolStripMenuItem.Click
Me.LayoutMdi(MdiLayout.TileHorizontal)
End Sub
Private Sub ArrangeIconsToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ArrangeIconsToolStripMenuItem.Click
Me.LayoutMdi(MdiLayout.ArrangeIcons)
End Sub
Private Sub CloseAllToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles CloseAllToolStripMenuItem.Click
' Fermez tous les formulaires enfants du parent.
For Each ChildForm As Form In Me.MdiChildren
ChildForm.Close()
Next
End Sub
Private m_ChildFormNumber As Integer
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(MDIParent))
Me.MenuStrip = New System.Windows.Forms.MenuStrip
Me.ToolStrip = New System.Windows.Forms.ToolStrip
Me.StatusStrip = New System.Windows.Forms.StatusStrip
Me.ContentsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.HelpMenu = New System.Windows.Forms.ToolStripMenuItem
Me.IndexToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.SearchToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.ToolStripSeparator8 = New System.Windows.Forms.ToolStripSeparator
Me.AboutToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.ArrangeIconsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.CloseAllToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.NewWindowToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.WindowsMenu = New System.Windows.Forms.ToolStripMenuItem
Me.CascadeToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.TileVerticalToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.TileHorizontalToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.OptionsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.HelpToolStripButton = New System.Windows.Forms.ToolStripButton
Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator
Me.PrintPreviewToolStripButton = New System.Windows.Forms.ToolStripButton
Me.ToolTip = New System.Windows.Forms.ToolTip(Me.components)
Me.ToolStripStatusLabel = New System.Windows.Forms.ToolStripStatusLabel
Me.PrintToolStripButton = New System.Windows.Forms.ToolStripButton
Me.NewToolStripButton = New System.Windows.Forms.ToolStripButton
Me.OpenToolStripButton = New System.Windows.Forms.ToolStripButton
Me.SaveToolStripButton = New System.Windows.Forms.ToolStripButton
Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator
Me.PrintPreviewToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.PrintToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.ToolStripSeparator4 = New System.Windows.Forms.ToolStripSeparator
Me.ExitToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.ToolStripSeparator5 = New System.Windows.Forms.ToolStripSeparator
Me.PrintSetupToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.SaveAsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.NewToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.FileMenu = New System.Windows.Forms.ToolStripMenuItem
Me.OpenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator
Me.SaveToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.EditMenu = New System.Windows.Forms.ToolStripMenuItem
Me.UndoToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.RedoToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator
Me.CutToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.CopyToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.PasteToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.ToolStripSeparator7 = New System.Windows.Forms.ToolStripSeparator
Me.SelectAllToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.ViewMenu = New System.Windows.Forms.ToolStripMenuItem
Me.ToolBarToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.StatusBarToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.ToolsMenu = New System.Windows.Forms.ToolStripMenuItem
Me.StatusStrip.SuspendLayout()
Me.ToolStrip.SuspendLayout()
Me.MenuStrip.SuspendLayout()
Me.SuspendLayout()
'
'ContentsToolStripMenuItem
'
Me.ContentsToolStripMenuItem.Name = "ContentsToolStripMenuItem"
Me.ContentsToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F1), System.Windows.Forms.Keys)
Me.ContentsToolStripMenuItem.Text = "&Contenu"
'
'HelpMenu
'
Me.HelpMenu.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ContentsToolStripMenuItem, Me.IndexToolStripMenuItem, Me.SearchToolStripMenuItem, Me.ToolStripSeparator8, Me.AboutToolStripMenuItem})
Me.HelpMenu.Name = "HelpMenu"
Me.HelpMenu.Text = "&?"
'
'IndexToolStripMenuItem
'
Me.IndexToolStripMenuItem.Image = CType(resources.GetObject("IndexToolStripMenuItem.Image"), System.Drawing.Image)
Me.IndexToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black
Me.IndexToolStripMenuItem.Name = "IndexToolStripMenuItem"
Me.IndexToolStripMenuItem.Text = "&Index"
'
'SearchToolStripMenuItem
'
Me.SearchToolStripMenuItem.Image = CType(resources.GetObject("SearchToolStripMenuItem.Image"), System.Drawing.Image)
Me.SearchToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black
Me.SearchToolStripMenuItem.Name = "SearchToolStripMenuItem"
Me.SearchToolStripMenuItem.Text = "&Rechercher"
'
'ToolStripSeparator8
'
Me.ToolStripSeparator8.Name = "ToolStripSeparator8"
'
'AboutToolStripMenuItem
'
Me.AboutToolStripMenuItem.Name = "AboutToolStripMenuItem"
Me.AboutToolStripMenuItem.Text = "À pr&opos de..."
'
'ArrangeIconsToolStripMenuItem
'
Me.ArrangeIconsToolStripMenuItem.Name = "ArrangeIconsToolStripMenuItem"
Me.ArrangeIconsToolStripMenuItem.Text = "&Réorganiser les icônes"
'
'CloseAllToolStripMenuItem
'
Me.CloseAllToolStripMenuItem.Name = "CloseAllToolStripMenuItem"
Me.CloseAllToolStripMenuItem.Text = "&Fermer tout"
'
'NewWindowToolStripMenuItem
'
Me.NewWindowToolStripMenuItem.Name = "NewWindowToolStripMenuItem"
Me.NewWindowToolStripMenuItem.Text = "&Nouvelle fenêtre"
'
'WindowsMenu
'
Me.WindowsMenu.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.NewWindowToolStripMenuItem, Me.CascadeToolStripMenuItem, Me.TileVerticalToolStripMenuItem, Me.TileHorizontalToolStripMenuItem, Me.CloseAllToolStripMenuItem, Me.ArrangeIconsToolStripMenuItem})
Me.WindowsMenu.Name = "WindowsMenu"
Me.WindowsMenu.Text = "F&enêtres"
'
'CascadeToolStripMenuItem
'
Me.CascadeToolStripMenuItem.Name = "CascadeToolStripMenuItem"
Me.CascadeToolStripMenuItem.Text = "&Cascade"
'
'TileVerticalToolStripMenuItem
'
Me.TileVerticalToolStripMenuItem.Name = "TileVerticalToolStripMenuItem"
Me.TileVerticalToolStripMenuItem.Text = "Mosaïque &verticale"
'
'TileHorizontalToolStripMenuItem
'
Me.TileHorizontalToolStripMenuItem.Name = "TileHorizontalToolStripMenuItem"
Me.TileHorizontalToolStripMenuItem.Text = "Mosaïque &horizontale"
'
'OptionsToolStripMenuItem
'
Me.OptionsToolStripMenuItem.Name = "OptionsToolStripMenuItem"
Me.OptionsToolStripMenuItem.Text = "&Options"
'
'HelpToolStripButton
'
Me.HelpToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.HelpToolStripButton.Image = CType(resources.GetObject("HelpToolStripButton.Image"), System.Drawing.Image)
Me.HelpToolStripButton.ImageTransparentColor = System.Drawing.Color.Black
Me.HelpToolStripButton.Name = "HelpToolStripButton"
Me.HelpToolStripButton.Text = "Aide"
'
'ToolStripSeparator2
'
Me.ToolStripSeparator2.Name = "ToolStripSeparator2"
'
'PrintPreviewToolStripButton
'
Me.PrintPreviewToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.PrintPreviewToolStripButton.Image = CType(resources.GetObject("PrintPreviewToolStripButton.Image"), System.Drawing.Image)
Me.PrintPreviewToolStripButton.ImageTransparentColor = System.Drawing.Color.Black
Me.PrintPreviewToolStripButton.Name = "PrintPreviewToolStripButton"
Me.PrintPreviewToolStripButton.Text = "Aperçu avant impression"
'
'ToolStripStatusLabel
'
Me.ToolStripStatusLabel.Name = "ToolStripStatusLabel"
Me.ToolStripStatusLabel.Text = "État"
'
'StatusStrip
'
Me.StatusStrip.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripStatusLabel})
Me.StatusStrip.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Table
Me.StatusStrip.Location = New System.Drawing.Point(0, 433)
Me.StatusStrip.Name = "StatusStrip"
Me.StatusStrip.Size = New System.Drawing.Size(632, 20)
Me.StatusStrip.TabIndex = 7
Me.StatusStrip.Text = "StatusStrip"
'
'PrintToolStripButton
'
Me.PrintToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.PrintToolStripButton.Image = CType(resources.GetObject("PrintToolStripButton.Image"), System.Drawing.Image)
Me.PrintToolStripButton.ImageTransparentColor = System.Drawing.Color.Black
Me.PrintToolStripButton.Name = "PrintToolStripButton"
Me.PrintToolStripButton.Text = "Imprimer"
Re: Custom Tab Control - OnPaint vs MessageBox - Problem
Code:
'
'ToolStripStatusLabel
'
Me.ToolStripStatusLabel.Name = "ToolStripStatusLabel"
Me.ToolStripStatusLabel.Text = "État"
'
'StatusStrip
'
Me.StatusStrip.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripStatusLabel})
Me.StatusStrip.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Table
Me.StatusStrip.Location = New System.Drawing.Point(0, 433)
Me.StatusStrip.Name = "StatusStrip"
Me.StatusStrip.Size = New System.Drawing.Size(632, 20)
Me.StatusStrip.TabIndex = 7
Me.StatusStrip.Text = "StatusStrip"
'
'PrintToolStripButton
'
Me.PrintToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.PrintToolStripButton.Image = CType(resources.GetObject("PrintToolStripButton.Image"), System.Drawing.Image)
Me.PrintToolStripButton.ImageTransparentColor = System.Drawing.Color.Black
Me.PrintToolStripButton.Name = "PrintToolStripButton"
Me.PrintToolStripButton.Text = "Imprimer"
'
'NewToolStripButton
'
Me.NewToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.NewToolStripButton.Image = CType(resources.GetObject("NewToolStripButton.Image"), System.Drawing.Image)
Me.NewToolStripButton.ImageTransparentColor = System.Drawing.Color.Black
Me.NewToolStripButton.Name = "NewToolStripButton"
Me.NewToolStripButton.Text = "Nouveau"
'
'ToolStrip
'
Me.ToolStrip.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.NewToolStripButton, Me.OpenToolStripButton, Me.SaveToolStripButton, Me.ToolStripSeparator1, Me.PrintToolStripButton, Me.PrintPreviewToolStripButton, Me.ToolStripSeparator2, Me.HelpToolStripButton})
Me.ToolStrip.Location = New System.Drawing.Point(0, 24)
Me.ToolStrip.Name = "ToolStrip"
Me.ToolStrip.Size = New System.Drawing.Size(632, 25)
Me.ToolStrip.TabIndex = 6
Me.ToolStrip.Text = "ToolStrip"
'
'OpenToolStripButton
'
Me.OpenToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.OpenToolStripButton.Image = CType(resources.GetObject("OpenToolStripButton.Image"), System.Drawing.Image)
Me.OpenToolStripButton.ImageTransparentColor = System.Drawing.Color.Black
Me.OpenToolStripButton.Name = "OpenToolStripButton"
Me.OpenToolStripButton.Text = "Ouvrir"
'
'SaveToolStripButton
'
Me.SaveToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.SaveToolStripButton.Image = CType(resources.GetObject("SaveToolStripButton.Image"), System.Drawing.Image)
Me.SaveToolStripButton.ImageTransparentColor = System.Drawing.Color.Black
Me.SaveToolStripButton.Name = "SaveToolStripButton"
Me.SaveToolStripButton.Text = "Enregistrer"
'
'ToolStripSeparator1
'
Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
'
'PrintPreviewToolStripMenuItem
'
Me.PrintPreviewToolStripMenuItem.Image = CType(resources.GetObject("PrintPreviewToolStripMenuItem.Image"), System.Drawing.Image)
Me.PrintPreviewToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black
Me.PrintPreviewToolStripMenuItem.Name = "PrintPreviewToolStripMenuItem"
Me.PrintPreviewToolStripMenuItem.Text = "Aperçu a&vant impression"
'
'PrintToolStripMenuItem
'
Me.PrintToolStripMenuItem.Image = CType(resources.GetObject("PrintToolStripMenuItem.Image"), System.Drawing.Image)
Me.PrintToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black
Me.PrintToolStripMenuItem.Name = "PrintToolStripMenuItem"
Me.PrintToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.P), System.Windows.Forms.Keys)
Me.PrintToolStripMenuItem.Text = "&Imprimer"
'
'ToolStripSeparator4
'
Me.ToolStripSeparator4.Name = "ToolStripSeparator4"
'
'ExitToolStripMenuItem
'
Me.ExitToolStripMenuItem.Name = "ExitToolStripMenuItem"
Me.ExitToolStripMenuItem.Text = "&Quitter"
'
'ToolStripSeparator5
'
Me.ToolStripSeparator5.Name = "ToolStripSeparator5"
'
'PrintSetupToolStripMenuItem
'
Me.PrintSetupToolStripMenuItem.Name = "PrintSetupToolStripMenuItem"
Me.PrintSetupToolStripMenuItem.Text = "Configuration de l'impression"
'
'SaveAsToolStripMenuItem
'
Me.SaveAsToolStripMenuItem.Name = "SaveAsToolStripMenuItem"
Me.SaveAsToolStripMenuItem.Text = "Enregistrer &sous"
'
'NewToolStripMenuItem
'
Me.NewToolStripMenuItem.Image = CType(resources.GetObject("NewToolStripMenuItem.Image"), System.Drawing.Image)
Me.NewToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black
Me.NewToolStripMenuItem.Name = "NewToolStripMenuItem"
Me.NewToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.N), System.Windows.Forms.Keys)
Me.NewToolStripMenuItem.Text = "&Nouveau"
'
'FileMenu
'
Me.FileMenu.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.NewToolStripMenuItem, Me.OpenToolStripMenuItem, Me.ToolStripSeparator3, Me.SaveToolStripMenuItem, Me.SaveAsToolStripMenuItem, Me.ToolStripSeparator4, Me.PrintToolStripMenuItem, Me.PrintPreviewToolStripMenuItem, Me.PrintSetupToolStripMenuItem, Me.ToolStripSeparator5, Me.ExitToolStripMenuItem})
Me.FileMenu.ImageTransparentColor = System.Drawing.SystemColors.ActiveBorder
Me.FileMenu.Name = "FileMenu"
Me.FileMenu.Text = "&Fichier"
'
'OpenToolStripMenuItem
'
Me.OpenToolStripMenuItem.Image = CType(resources.GetObject("OpenToolStripMenuItem.Image"), System.Drawing.Image)
Me.OpenToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black
Me.OpenToolStripMenuItem.Name = "OpenToolStripMenuItem"
Me.OpenToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys)
Me.OpenToolStripMenuItem.Text = "&Ouvrir"
'
'ToolStripSeparator3
'
Me.ToolStripSeparator3.Name = "ToolStripSeparator3"
'
'SaveToolStripMenuItem
'
Me.SaveToolStripMenuItem.Image = CType(resources.GetObject("SaveToolStripMenuItem.Image"), System.Drawing.Image)
Me.SaveToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black
Me.SaveToolStripMenuItem.Name = "SaveToolStripMenuItem"
Me.SaveToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys)
Me.SaveToolStripMenuItem.Text = "&Enregistrer"
'
'MenuStrip
'
Me.MenuStrip.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FileMenu, Me.EditMenu, Me.ViewMenu, Me.ToolsMenu, Me.WindowsMenu, Me.HelpMenu})
Me.MenuStrip.Location = New System.Drawing.Point(0, 0)
Me.MenuStrip.MdiWindowListItem = Me.WindowsMenu
Me.MenuStrip.Name = "MenuStrip"
Me.MenuStrip.Size = New System.Drawing.Size(632, 24)
Me.MenuStrip.TabIndex = 5
Me.MenuStrip.Text = "MenuStrip"
'
'EditMenu
'
Me.EditMenu.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.UndoToolStripMenuItem, Me.RedoToolStripMenuItem, Me.ToolStripSeparator6, Me.CutToolStripMenuItem, Me.CopyToolStripMenuItem, Me.PasteToolStripMenuItem, Me.ToolStripSeparator7, Me.SelectAllToolStripMenuItem})
Me.EditMenu.Name = "EditMenu"
Me.EditMenu.Text = "&Edition"
'
'UndoToolStripMenuItem
'
Me.UndoToolStripMenuItem.Image = CType(resources.GetObject("UndoToolStripMenuItem.Image"), System.Drawing.Image)
Me.UndoToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black
Me.UndoToolStripMenuItem.Name = "UndoToolStripMenuItem"
Me.UndoToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Z), System.Windows.Forms.Keys)
Me.UndoToolStripMenuItem.Text = "&Annuler"
'
'RedoToolStripMenuItem
'
Me.RedoToolStripMenuItem.Image = CType(resources.GetObject("RedoToolStripMenuItem.Image"), System.Drawing.Image)
Me.RedoToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black
Me.RedoToolStripMenuItem.Name = "RedoToolStripMenuItem"
Me.RedoToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Y), System.Windows.Forms.Keys)
Me.RedoToolStripMenuItem.Text = "&Rétablir"
'
'ToolStripSeparator6
'
Me.ToolStripSeparator6.Name = "ToolStripSeparator6"
'
'CutToolStripMenuItem
'
Me.CutToolStripMenuItem.Image = CType(resources.GetObject("CutToolStripMenuItem.Image"), System.Drawing.Image)
Me.CutToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black
Me.CutToolStripMenuItem.Name = "CutToolStripMenuItem"
Me.CutToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.X), System.Windows.Forms.Keys)
Me.CutToolStripMenuItem.Text = "Co&uper"
'
'CopyToolStripMenuItem
'
Me.CopyToolStripMenuItem.Image = CType(resources.GetObject("CopyToolStripMenuItem.Image"), System.Drawing.Image)
Me.CopyToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black
Me.CopyToolStripMenuItem.Name = "CopyToolStripMenuItem"
Me.CopyToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys)
Me.CopyToolStripMenuItem.Text = "&Copier"
'
'PasteToolStripMenuItem
'
Me.PasteToolStripMenuItem.Image = CType(resources.GetObject("PasteToolStripMenuItem.Image"), System.Drawing.Image)
Me.PasteToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black
Me.PasteToolStripMenuItem.Name = "PasteToolStripMenuItem"
Me.PasteToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.V), System.Windows.Forms.Keys)
Me.PasteToolStripMenuItem.Text = "&Coller"
'
'ToolStripSeparator7
'
Me.ToolStripSeparator7.Name = "ToolStripSeparator7"
'
'SelectAllToolStripMenuItem
'
Me.SelectAllToolStripMenuItem.Name = "SelectAllToolStripMenuItem"
Me.SelectAllToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.A), System.Windows.Forms.Keys)
Me.SelectAllToolStripMenuItem.Text = "Sélectionner &tout"
'
'ViewMenu
'
Me.ViewMenu.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolBarToolStripMenuItem, Me.StatusBarToolStripMenuItem})
Me.ViewMenu.Name = "ViewMenu"
Me.ViewMenu.Text = "&Affichage"
'
'ToolBarToolStripMenuItem
'
Me.ToolBarToolStripMenuItem.Checked = True
Me.ToolBarToolStripMenuItem.CheckOnClick = True
Me.ToolBarToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked
Me.ToolBarToolStripMenuItem.Name = "ToolBarToolStripMenuItem"
Me.ToolBarToolStripMenuItem.Text = "&Barre d'outils"
'
'StatusBarToolStripMenuItem
'
Me.StatusBarToolStripMenuItem.Checked = True
Me.StatusBarToolStripMenuItem.CheckOnClick = True
Me.StatusBarToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked
Me.StatusBarToolStripMenuItem.Name = "StatusBarToolStripMenuItem"
Me.StatusBarToolStripMenuItem.Text = "&Barre d'état"
'
'ToolsMenu
'
Me.ToolsMenu.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.OptionsToolStripMenuItem})
Me.ToolsMenu.Name = "ToolsMenu"
Me.ToolsMenu.Text = "&Outils"
'
'MDIParent
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(632, 453)
Me.Controls.Add(Me.ToolStrip)
Me.Controls.Add(Me.MenuStrip)
Me.Controls.Add(Me.StatusStrip)
Me.IsMdiContainer = True
Me.MainMenuStrip = Me.MenuStrip
Me.Name = "MDIParent"
Me.Text = "MDIParent"
Me.StatusStrip.ResumeLayout(False)
Me.ToolStrip.ResumeLayout(False)
Me.MenuStrip.ResumeLayout(False)
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Re: Custom Tab Control - OnPaint vs MessageBox - Problem
Code:
Friend WithEvents ContentsToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents HelpMenu As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents IndexToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents SearchToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ToolStripSeparator8 As System.Windows.Forms.ToolStripSeparator
Friend WithEvents AboutToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ArrangeIconsToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents CloseAllToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents NewWindowToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents WindowsMenu As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents CascadeToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents TileVerticalToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents TileHorizontalToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents OptionsToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents HelpToolStripButton As System.Windows.Forms.ToolStripButton
Friend WithEvents ToolStripSeparator2 As System.Windows.Forms.ToolStripSeparator
Friend WithEvents PrintPreviewToolStripButton As System.Windows.Forms.ToolStripButton
Friend WithEvents ToolTip As System.Windows.Forms.ToolTip
Friend WithEvents ToolStripStatusLabel As System.Windows.Forms.ToolStripStatusLabel
Friend WithEvents StatusStrip As System.Windows.Forms.StatusStrip
Friend WithEvents PrintToolStripButton As System.Windows.Forms.ToolStripButton
Friend WithEvents NewToolStripButton As System.Windows.Forms.ToolStripButton
Friend WithEvents ToolStrip As System.Windows.Forms.ToolStrip
Friend WithEvents OpenToolStripButton As System.Windows.Forms.ToolStripButton
Friend WithEvents SaveToolStripButton As System.Windows.Forms.ToolStripButton
Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator
Friend WithEvents PrintPreviewToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents PrintToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ToolStripSeparator4 As System.Windows.Forms.ToolStripSeparator
Friend WithEvents ExitToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ToolStripSeparator5 As System.Windows.Forms.ToolStripSeparator
Friend WithEvents PrintSetupToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents SaveAsToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents NewToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents FileMenu As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents OpenToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ToolStripSeparator3 As System.Windows.Forms.ToolStripSeparator
Friend WithEvents SaveToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents MenuStrip As System.Windows.Forms.MenuStrip
Friend WithEvents EditMenu As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents UndoToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents RedoToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ToolStripSeparator6 As System.Windows.Forms.ToolStripSeparator
Friend WithEvents CutToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents CopyToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents PasteToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ToolStripSeparator7 As System.Windows.Forms.ToolStripSeparator
Friend WithEvents SelectAllToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ViewMenu As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ToolBarToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents StatusBarToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ToolsMenu As System.Windows.Forms.ToolStripMenuItem
End Class
MsgBoxForeGround :
Code:
' Force MsgBox to ForeGround & TopMost v1.02
' A workaround for when msgbox hides behind other windows.
'
' Usage:
' 1) Add this module to your project.
' 2) Replace "MessageBox.Show" with "MessageBoxEx" where needed.
Imports System.Runtime.InteropServices
Module MsgBoxForeGround
Private WithEvents msgTimer As New Timer
Private msgCaption As String
<DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
Private Function SetForegroundWindow(ByVal hWnd As IntPtr) As Boolean
End Function
<DllImport("user32.dll", CharSet:=CharSet.Auto, EntryPoint:="FindWindow")> _
Private Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
End Function
Private Const SWP_NOMOVE As UInteger = &H2
Private Const SWP_NOSIZE As UInteger = &H1
Private Const SWP_SHOWWINDOW As UInteger = &H40
Private ReadOnly HWND_TOPMOST As New IntPtr(-1)
<DllImport("user32.dll", EntryPoint:="SetWindowPos")> _
Private Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As UInteger) As Boolean
End Function
Private Sub msgTimer_Tick(sender As Object, e As System.EventArgs) Handles msgTimer.Tick
' get handle to msgbox
Dim hWnd As IntPtr = FindWindow("#32770", msgCaption)
If Not hWnd.Equals(IntPtr.Zero) Then
' stop timer
msgTimer.Stop()
' set msgbox topmost
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW)
' set msgbox foreground
SetForegroundWindow(hWnd)
End If
End Sub
' // show message box & return dialog result //
Public Function MessageBoxEx(ByVal text As String _
, Optional ByVal caption As String = "" _
, Optional ByVal buttons As MessageBoxButtons = MessageBoxButtons.OK _
, Optional ByVal icon As MessageBoxIcon = MessageBoxIcon.None _
, Optional ByVal defaultButton As MessageBoxDefaultButton = MessageBoxDefaultButton.Button1) _
As DialogResult
msgCaption = caption 'msgbox titlebar text
msgTimer.Interval = 30 ' timer speed
msgTimer.Start() ' start timer
' show our msgbox
Dim result As DialogResult = MessageBox.Show(text, caption, buttons, icon, defaultButton)
msgTimer.Stop() ' make sure timer has stopped!
msgTimer.Dispose()
Return result ' return msgbox result.
End Function
End Module
This is all my code in the project.
1 - For the test, create some new form1 by press Fichier -> Nouveau
2 - Then press Fenêtre -> Fermer tout
When you will press "Fermer Tout" all Child Form will be close.
Thx for your help
BTw : Sorry my windows is in french.
Re: Custom Tab Control - OnPaint vs MessageBox - Problem
Quote:
Originally Posted by
warp123
[CODE]
Thx for your help
BTw : Sorry my windows is in french.
Well I made a simple MDI app and that CustomTabControl screwed up the app just like you say, very strange! I'd scrap it and look for a different control, maybe look in the code bank here? Good Luck! :wave: