2009-04-20 6 views

Antwort

0

Ich glaube nicht, es ist einfach mit Standard-Text-Steuerelement zu tun, aber Sie können icsharpcode texteditor oder Alsing's text editor control

I ICSharpCode für ein ähnliches Zeug versuchen verwendet haben, ist es ziemlich einfach, mit zu arbeiten.

7

Windows verfügt über eine ausgeblendete Funktionalität zum Kopieren von MessageBox-Text, wenn ein Benutzer STRG + C drückt, wenn die Nachrichtenbox aktiv ist.

Wenn Sie zulassen müssen, dass ein Benutzer den Text hervorhebt, müssen Sie ein benutzerdefiniertes Meldungsfeld dafür erstellen.

0

Erstellen Sie ein benutzerdefiniertes Meldungsfeld, und verwenden Sie eine deaktivierte TextBox mit den richtigen Formatvorlagen, um die Nachricht anzuzeigen.

Per Jhonny Kommentar: Erstellen Sie ein neues Formular, und zeigen Sie es mit Showdialog

+0

Wie erstelle ich eine benutzerdefinierte Message-Box? –

+0

Erstellen Sie ein neues Formular und zeigen Sie es mit ShowDialog –

+0

Jhonny schlug mich dazu. – ChrisF

0

ein neues Formular zu Ihrem Projekt hinzufügen. In Visual Studio können Sie dazu unter Projekt -> Windows-Formular hinzufügen gehen.

Ändern Sie das Formular, bis Sie das Gefühl haben, dass es den Standardfenstern ähnelt. Einige Eigenschaften Sie ändern möchten:

  • Formborderstyle
  • Startposition
  • MaximizeBox
  • MinimizeBox
  • ShowIcon
  • ShowInTaskbar

Verwenden Sie ein Readonly Textbox für die Form des Etikette. Setzen Sie den BorderStyle der Textbox auf None.

Verwenden Sie schließlich die ShowDialog() - Methode des Formulars, um es als modales Dialogfeld anzuzeigen.

PS. Sie sollten es auch mit großen Mengen Text testen. Möglicherweise müssen Sie den Autosize-Modus des Formulars festlegen und das Textfeld auf Multiline und Umbruch setzen.

Ich hoffe, dass hilft.

1

Hier ist ein Code, mit dem ich eine benutzerdefinierte MessageBox erstellt habe. Im Folgenden ist der MessageBox-Klasse:

' A custom MessageBox class 
' Written to allow custom button text, specifically to allow for bilingual messageboxes 
' 
Public Class CustomMessageBox 

    'Variables 
    Private _btn1Return As DialogResult 
    Private _btn2Return As DialogResult 
    Private _btn3Return As DialogResult 

    'Enumerate system icons 
    Enum SystemIcons 
    ErrorIcon = 1 
    WarningIcon = 2 
    QuestionIcon = 3 
    InformationIcon = 4 
    End Enum 

    'Enumerate possible button combinations 
    Enum ButtonTypes 
    YesNo = 1 
    YesNoCancel = 2 
    Ok = 3 
    OkCancel = 4 
    End Enum 

    'Enumerate possible default buttons 
    Enum DefaultButton 
    Button1 = 1 
    Button2 = 2 
    Button3 = 3 
    End Enum 


#Region "Constructor" 
    'Constructor 
    Public Sub New(ByVal text As String, ByVal caption As String, ByVal buttons As ButtonTypes, ByVal icon As SystemIcons, ByVal defaultButton As DefaultButton) 
    InitializeComponent() 
    Me.Text = caption 
    Me.msgBoxText.Text = text 
    SetupIcon(icon) 
    SetupButtons(buttons, defaultButton) 
    End Sub 
#End Region 

#Region "Functions" 
    'Set text and return values of all buttons. Also set focus to default button. 
    Private Sub SetupButtons(ByVal buttons As Integer, ByVal defaultButton As Integer) 
    Select Case buttons 
     Case 1 
     msgBoxButton1.Text = My.Resources.Caption_Yes 
     _btn1Return = Windows.Forms.DialogResult.Yes 
     msgBoxButton2.Text = My.Resources.Caption_No 
     _btn2Return = Windows.Forms.DialogResult.No 
     msgBoxButton3.Visible = False 
     Case 2 
     msgBoxButton1.Text = My.Resources.Caption_Yes 
     _btn1Return = Windows.Forms.DialogResult.Yes 
     msgBoxButton2.Text = My.Resources.Caption_No 
     _btn2Return = Windows.Forms.DialogResult.No 
     msgBoxButton3.Text = My.Resources.Caption_Cancel 
     _btn3Return = Windows.Forms.DialogResult.Cancel 
     Case 3 
     msgBoxButton1.Text = My.Resources.Caption_OK 
     _btn1Return = Windows.Forms.DialogResult.OK 
     msgBoxButton2.Visible = False 
     msgBoxButton3.Visible = False 
     Case 4 
     msgBoxButton1.Text = My.Resources.Caption_OK 
     _btn1Return = Windows.Forms.DialogResult.OK 
     msgBoxButton2.Text = My.Resources.Caption_Cancel 
     _btn2Return = Windows.Forms.DialogResult.Cancel 
     msgBoxButton3.Visible = False 
    End Select 

    'Set focus to specified default button 
    Select Case defaultButton 
     Case 1 
     msgBoxButton1.Focus() 
     Case 2 
     msgBoxButton2.Focus() 
     Case 3 
     msgBoxButton3.Focus() 
    End Select 

    End Sub 

    'Display specified icon 
    Private Sub SetupIcon(ByVal iconValue As Integer) 
    Dim icon As Icon = Nothing 
    Select Case iconValue 
     Case 1 
     icon = System.Drawing.SystemIcons.Error 
     Case 2 
     icon = System.Drawing.SystemIcons.Warning 
     Case 3 
     icon = System.Drawing.SystemIcons.Question 
     Case 4 
     icon = System.Drawing.SystemIcons.Information 
    End Select 

    Me.msgBoxIcon.Image = icon.ToBitmap 
    End Sub 
#End Region 

#Region "Events" 
    'Set return value when button is clicked. 
    Private Sub msgBoxButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles msgBoxButton1.Click 
    Me.DialogResult = _btn1Return 
    Me.Close() 
    End Sub 

    'Set return value when button is clicked. 
    Private Sub msgBoxButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles msgBoxButton2.Click 
    Me.DialogResult = _btn2Return 
    Me.Close() 
    End Sub 

    'Set return value when button is clicked. 
    Private Sub msgBoxButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles msgBoxButton3.Click 
    Me.DialogResult = _btn3Return 
    Me.Close() 
    End Sub 
#End Region 

End Class 

Und hier ist der Designer-Code mit ihm verbunden:

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ 
Partial Class CustomMessageBox 
    Inherits System.Windows.Forms.Form 

    'Form overrides dispose to clean up the component list. 
    <System.Diagnostics.DebuggerNonUserCode()> _ 
    Protected Overrides Sub Dispose(ByVal disposing As Boolean) 
     Try 
      If disposing AndAlso components IsNot Nothing Then 
       components.Dispose() 
      End If 
     Finally 
      MyBase.Dispose(disposing) 
     End Try 
    End Sub 

    'Required by the Windows Form Designer 
    Private components As System.ComponentModel.IContainer 

    'NOTE: The following procedure is required by the Windows Form Designer 
    'It can be modified using the Windows Form Designer. 
    'Do not modify it using the code editor. 
    <System.Diagnostics.DebuggerStepThrough()> _ 
    Private Sub InitializeComponent() 
    Me.msgBoxText = New System.Windows.Forms.Label 
    Me.msgBoxIcon = New System.Windows.Forms.PictureBox 
    Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel 
    Me.msgBoxButton1 = New System.Windows.Forms.Button 
    Me.msgBoxButton3 = New System.Windows.Forms.Button 
    Me.msgBoxButton2 = New System.Windows.Forms.Button 
    CType(Me.msgBoxIcon, System.ComponentModel.ISupportInitialize).BeginInit() 
    Me.TableLayoutPanel1.SuspendLayout() 
    Me.SuspendLayout() 
    ' 
    'msgBoxText 
    ' 
    Me.msgBoxText.AutoSize = True 
    Me.msgBoxText.Cursor = System.Windows.Forms.Cursors.Cross 
    Me.msgBoxText.Dock = System.Windows.Forms.DockStyle.Fill 
    Me.msgBoxText.FlatStyle = System.Windows.Forms.FlatStyle.Flat 
    Me.msgBoxText.Location = New System.Drawing.Point(59, 0) 
    Me.msgBoxText.MaximumSize = New System.Drawing.Size(245, 0) 
    Me.msgBoxText.Name = "msgBoxText" 
    Me.msgBoxText.Padding = New System.Windows.Forms.Padding(0, 10, 0, 10) 
    Me.msgBoxText.Size = New System.Drawing.Size(39, 33) 
    Me.msgBoxText.TabIndex = 6 
    Me.msgBoxText.Text = "Label1" 
    ' 
    'msgBoxIcon 
    ' 
    Me.msgBoxIcon.Dock = System.Windows.Forms.DockStyle.Left 
    Me.msgBoxIcon.Location = New System.Drawing.Point(0, 0) 
    Me.msgBoxIcon.Name = "msgBoxIcon" 
    Me.msgBoxIcon.Padding = New System.Windows.Forms.Padding(15, 10, 0, 0) 
    Me.msgBoxIcon.Size = New System.Drawing.Size(59, 53) 
    Me.msgBoxIcon.TabIndex = 4 
    Me.msgBoxIcon.TabStop = False 
    ' 
    'TableLayoutPanel1 
    ' 
    Me.TableLayoutPanel1.AutoSize = True 
    Me.TableLayoutPanel1.ColumnCount = 5 
    Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) 
    Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle) 
    Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle) 
    Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle) 
    Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) 
    Me.TableLayoutPanel1.Controls.Add(Me.msgBoxButton1, 1, 0) 
    Me.TableLayoutPanel1.Controls.Add(Me.msgBoxButton3, 3, 0) 
    Me.TableLayoutPanel1.Controls.Add(Me.msgBoxButton2, 2, 0) 
    Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom 
    Me.TableLayoutPanel1.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.FixedSize 
    Me.TableLayoutPanel1.Location = New System.Drawing.Point(0, 53) 
    Me.TableLayoutPanel1.Name = "TableLayoutPanel1" 
    Me.TableLayoutPanel1.Padding = New System.Windows.Forms.Padding(0, 0, 0, 10) 
    Me.TableLayoutPanel1.RowCount = 1 
    Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle) 
    Me.TableLayoutPanel1.Size = New System.Drawing.Size(305, 39) 
    Me.TableLayoutPanel1.TabIndex = 5 
    ' 
    'msgBoxButton1 
    ' 
    Me.msgBoxButton1.AutoSize = True 
    Me.msgBoxButton1.Location = New System.Drawing.Point(34, 3) 
    Me.msgBoxButton1.Name = "msgBoxButton1" 
    Me.msgBoxButton1.Size = New System.Drawing.Size(75, 23) 
    Me.msgBoxButton1.TabIndex = 0 
    Me.msgBoxButton1.Text = "Button1" 
    Me.msgBoxButton1.UseVisualStyleBackColor = True 
    ' 
    'msgBoxButton3 
    ' 
    Me.msgBoxButton3.AutoSize = True 
    Me.msgBoxButton3.Location = New System.Drawing.Point(196, 3) 
    Me.msgBoxButton3.Name = "msgBoxButton3" 
    Me.msgBoxButton3.Size = New System.Drawing.Size(75, 23) 
    Me.msgBoxButton3.TabIndex = 2 
    Me.msgBoxButton3.Text = "Button3" 
    Me.msgBoxButton3.UseVisualStyleBackColor = True 
    ' 
    'msgBoxButton2 
    ' 
    Me.msgBoxButton2.AutoSize = True 
    Me.msgBoxButton2.Location = New System.Drawing.Point(115, 3) 
    Me.msgBoxButton2.Name = "msgBoxButton2" 
    Me.msgBoxButton2.Size = New System.Drawing.Size(75, 23) 
    Me.msgBoxButton2.TabIndex = 1 
    Me.msgBoxButton2.Text = "Button2" 
    Me.msgBoxButton2.UseVisualStyleBackColor = True 
    ' 
    'CustomMessageBox 
    ' 
    Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) 
    Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font 
    Me.AutoSize = True 
    Me.ClientSize = New System.Drawing.Size(305, 92) 
    Me.Controls.Add(Me.msgBoxText) 
    Me.Controls.Add(Me.msgBoxIcon) 
    Me.Controls.Add(Me.TableLayoutPanel1) 
    Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog 
    Me.MaximizeBox = False 
    Me.MinimizeBox = False 
    Me.Name = "CustomMessageBox" 
    Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide 
    Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen 
    Me.Text = "MessageBox" 
    Me.TopMost = True 
    CType(Me.msgBoxIcon, System.ComponentModel.ISupportInitialize).EndInit() 
    Me.TableLayoutPanel1.ResumeLayout(False) 
    Me.TableLayoutPanel1.PerformLayout() 
    Me.ResumeLayout(False) 
    Me.PerformLayout() 

    End Sub 
    Friend WithEvents msgBoxText As System.Windows.Forms.Label 
    Friend WithEvents msgBoxIcon As System.Windows.Forms.PictureBox 
    Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel 
    Friend WithEvents msgBoxButton1 As System.Windows.Forms.Button 
    Friend WithEvents msgBoxButton3 As System.Windows.Forms.Button 
    Friend WithEvents msgBoxButton2 As System.Windows.Forms.Button 
End Class