TextBoxRenderer Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce metodi utilizzati per eseguire il rendering di un controllo casella di testo con stili di visualizzazione. Questa classe non può essere ereditata.
public ref class TextBoxRenderer sealed
public ref class TextBoxRenderer abstract sealed
public sealed class TextBoxRenderer
public static class TextBoxRenderer
type TextBoxRenderer = class
Public NotInheritable Class TextBoxRenderer
Public Class TextBoxRenderer
- Ereditarietà
-
TextBoxRenderer
Esempio
Nell'esempio di codice seguente viene illustrato come creare un controllo personalizzato che usa il DrawTextBox metodo per disegnare una casella di testo. Il controllo consente inoltre all'utente di selezionare uno dei TextFormatFlags valori da applicare al testo della casella di testo.
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>
#using <System.dll>
using namespace System;
using namespace System::Text;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::Windows::Forms::VisualStyles;
namespace TextBoxRendererSample
{
public ref class CustomTextBox : public Control
{
private:
TextFormatFlags textFlags;
ComboBox^ textFormatFlagsComboBox;
Rectangle textBorder;
Rectangle textRectangle;
StringBuilder^ textMeasurements;
public:
CustomTextBox():Control()
{
textFlags = TextFormatFlags::Default;
textFormatFlagsComboBox = gcnew ComboBox();
textMeasurements = gcnew StringBuilder();
this->Location = Point(10, 10);
this->Size = System::Drawing::Size(300, 200);
this->Font = SystemFonts::IconTitleFont;
this->Text = "This is a long sentence that will exceed " +
"the text box bounds";
textBorder.Location = Point(10, 10);
textBorder.Size = System::Drawing::Size(200, 50);
textRectangle.Location = Point(textBorder.X + 2,
textBorder.Y + 2);
textRectangle.Size = System::Drawing::Size(textBorder.Size.Width - 4,
textBorder.Height - 4);
textFormatFlagsComboBox->Location = Point(10, 100);
textFormatFlagsComboBox->Size = System::Drawing::Size(150, 20);
textFormatFlagsComboBox->SelectedIndexChanged +=
gcnew EventHandler(this,
&CustomTextBox::textFormatFlagsComboBox_SelectedIndexChanged);
// Populate the combo box with the TextFormatFlags value names.
for each (String^ name in Enum::GetNames(TextFormatFlags::typeid))
{
textFormatFlagsComboBox->Items->Add(name);
}
textFormatFlagsComboBox->SelectedIndex = 0;
this->Controls->Add(textFormatFlagsComboBox);
}
// Use DrawText with the current TextFormatFlags.
protected:
virtual void OnPaint(PaintEventArgs^ e) override
{
__super::OnPaint(e);
if (TextBoxRenderer::IsSupported)
{
TextBoxRenderer::DrawTextBox(e->Graphics, textBorder, this->Text,
this->Font, textRectangle, textFlags, TextBoxState::Normal);
this->Parent->Text = "CustomTextBox Enabled";
}
else
{
this->Parent->Text = "CustomTextBox Disabled";
}
}
// Assign the combo box selection to the display text.
private:
void textFormatFlagsComboBox_SelectedIndexChanged(
Object^ sender, EventArgs^ e)
{
this->textFlags = (TextFormatFlags)Enum::Parse(
TextFormatFlags::typeid,
(String^)textFormatFlagsComboBox->Items[
textFormatFlagsComboBox->SelectedIndex]);
Invalidate();
}
};
public ref class Form1 : public Form
{
public:
Form1()
{
__super::Form();
this->Size = System::Drawing::Size(350, 200);
CustomTextBox^ textBox1 = gcnew CustomTextBox();
Controls->Add(textBox1);
}
};
}
using namespace TextBoxRendererSample;
[STAThread]
int main()
{
// The call to EnableVisualStyles below does not affect whether
// TextBoxRenderer draws the text box; as long as visual styles
// are enabled by the operating system, TextBoxRenderer will
// draw the text box.
Application::EnableVisualStyles();
Application::Run(gcnew Form1());
}
using System;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;
namespace TextBoxRendererSample
{
class Form1 : Form
{
public Form1()
: base()
{
this.Size = new Size(350, 200);
CustomTextBox TextBox1 = new CustomTextBox();
Controls.Add(TextBox1);
}
[STAThread]
static void Main()
{
// The call to EnableVisualStyles below does not affect whether
// TextBoxRenderer draws the text box; as long as visual styles
// are enabled by the operating system, TextBoxRenderer will
// draw the text box.
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
public class CustomTextBox : Control
{
private TextFormatFlags textFlags = TextFormatFlags.Default;
ComboBox comboBox1 = new ComboBox();
Rectangle textBorder = new Rectangle();
Rectangle textRectangle = new Rectangle();
StringBuilder textMeasurements = new StringBuilder();
public CustomTextBox()
: base()
{
this.Location = new Point(10, 10);
this.Size = new Size(300, 200);
this.Font = SystemFonts.IconTitleFont;
this.Text = "This is a long sentence that will exceed " +
"the text box bounds";
textBorder.Location = new Point(10, 10);
textBorder.Size = new Size(200, 50);
textRectangle.Location = new Point(textBorder.X + 2,
textBorder.Y + 2);
textRectangle.Size = new Size(textBorder.Size.Width - 4,
textBorder.Height - 4);
comboBox1.Location = new Point(10, 100);
comboBox1.Size = new Size(150, 20);
comboBox1.SelectedIndexChanged +=
new EventHandler(comboBox1_SelectedIndexChanged);
// Populate the combo box with the TextFormatFlags value names.
foreach (string name in Enum.GetNames(typeof(TextFormatFlags)))
{
comboBox1.Items.Add(name);
}
comboBox1.SelectedIndex = 0;
this.Controls.Add(comboBox1);
}
// Use DrawText with the current TextFormatFlags.
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (TextBoxRenderer.IsSupported)
{
TextBoxRenderer.DrawTextBox(e.Graphics, textBorder, this.Text,
this.Font, textRectangle, textFlags, TextBoxState.Normal);
this.Parent.Text = "CustomTextBox Enabled";
}
else
{
this.Parent.Text = "CustomTextBox Disabled";
}
}
// Assign the combo box selection to the display text.
void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
this.textFlags = (TextFormatFlags)Enum.Parse(
typeof(TextFormatFlags),
(string)comboBox1.Items[comboBox1.SelectedIndex]);
Invalidate();
}
}
}
Imports System.Text
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Windows.Forms.VisualStyles
Namespace TextBoxRendererSample
Class Form1
Inherits Form
Public Sub New()
Me.Size = New Size(350, 200)
Dim TextBox1 As New CustomTextBox()
Controls.Add(TextBox1)
End Sub
<STAThread()> _
Shared Sub Main()
' The call to EnableVisualStyles below does not affect whether
' TextBoxRenderer draws the text box; as long as visual styles
' are enabled by the operating system, TextBoxRenderer will
' draw the text box.
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub
End Class
Public Class CustomTextBox
Inherits Control
Private textFlags As TextFormatFlags = TextFormatFlags.Default
Private WithEvents comboBox1 As New ComboBox()
Private textBorder As New Rectangle()
Private textRectangle As New Rectangle()
Private textMeasurements As New StringBuilder()
Public Sub New()
With Me
.Location = New Point(10, 10)
.Size = New Size(300, 200)
.Font = SystemFonts.IconTitleFont
.Text = "This is a long sentence that will exceed " + _
"the text box bounds"
End With
textBorder.Location = New Point(10, 10)
textBorder.Size = New Size(200, 50)
textRectangle.Location = New Point(textBorder.X + 2, _
textBorder.Y + 2)
textRectangle.Size = New Size(textBorder.Size.Width - 4, _
textBorder.Height - 4)
comboBox1.Location = New Point(10, 100)
comboBox1.Size = New Size(150, 20)
' Populate the combo box with the TextFormatFlags value names.
Dim name As String
For Each name In [Enum].GetNames(GetType(TextFormatFlags))
comboBox1.Items.Add(name)
Next name
comboBox1.SelectedIndex = 0
Me.Controls.Add(comboBox1)
End Sub
' Use DrawText with the current TextFormatFlags.
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
If TextBoxRenderer.IsSupported Then
TextBoxRenderer.DrawTextBox(e.Graphics, textBorder, Me.Text, _
Me.Font, textRectangle, textFlags, TextBoxState.Normal)
Me.Parent.Text = "CustomTextBox Enabled"
Else
Me.Parent.Text = "CustomTextBox Disabled"
End If
End Sub
' Assign the combo box selection to the display text.
Private Sub comboBox1_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As EventArgs) Handles comboBox1.SelectedIndexChanged
Me.textFlags = CType([Enum].Parse(GetType(TextFormatFlags), _
CStr(comboBox1.Items(comboBox1.SelectedIndex))), _
TextFormatFlags)
Invalidate()
End Sub
End Class
End Namespace
Commenti
La TextBoxRenderer classe fornisce un set di metodi che possono essere utilizzati per eseguire il rendering di un controllo casella di static testo con lo stile di visualizzazione corrente del sistema operativo. Il rendering di un controllo fa riferimento al disegno dell'interfaccia utente di un controllo. Ciò è utile se si disegna un controllo personalizzato che deve avere l'aspetto dello stile di visualizzazione corrente. Per disegnare una casella di testo, utilizzare uno dei DrawTextBox metodi . Questi metodi offrono un'ampia gamma di opzioni, ad esempio l'applicazione della formattazione del testo o la specifica dei limiti di testo.
Se gli stili di visualizzazione sono abilitati nel sistema operativo e gli stili di visualizzazione vengono applicati all'area client delle finestre dell'applicazione, DrawTextBox disegnare la casella di testo con lo stile di visualizzazione corrente. In caso contrario, DrawTextBox genererà un'eccezione InvalidOperationException. Per determinare se è possibile utilizzare i membri di questa classe, è possibile controllare il valore della IsSupported proprietà .
Questa classe esegue il wrapping della funzionalità di un oggetto System.Windows.Forms.VisualStyles.VisualStyleRenderer impostato su uno degli elementi della System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox.TextEdit classe . Per altre informazioni, vedere Rendering dei controlli con stili di visualizzazione.
Proprietà
| Nome | Descrizione |
|---|---|
| IsSupported |
Ottiene un valore che indica se la TextBoxRenderer classe può essere utilizzata per disegnare una casella di testo con stili di visualizzazione. |
Metodi
| Nome | Descrizione |
|---|---|
| DrawTextBox(Graphics, Rectangle, String, Font, Rectangle, TextBoxState) |
Disegna un controllo casella di testo nello stato e nei limiti specificati e con il testo e i limiti di testo specificati. |
| DrawTextBox(Graphics, Rectangle, String, Font, Rectangle, TextFormatFlags, TextBoxState) |
Disegna un controllo casella di testo nello stato e nei limiti specificati e con il testo, i limiti di testo e la formattazione del testo specificati. |
| DrawTextBox(Graphics, Rectangle, String, Font, TextBoxState) |
Disegna un controllo casella di testo nello stato e nei limiti specificati e con il testo specificato. |
| DrawTextBox(Graphics, Rectangle, String, Font, TextFormatFlags, TextBoxState) |
Disegna un controllo casella di testo nello stato e nei limiti specificati e con il testo e la formattazione del testo specificati. |
| DrawTextBox(Graphics, Rectangle, TextBoxState) |
Disegna un controllo casella di testo nello stato e nei limiti specificati. |