TextBoxRenderer Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Udostępnia metody używane do renderowania kontrolki pola tekstowego za pomocą stylów wizualnych. Klasa ta nie może być dziedziczona.
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
- Dziedziczenie
-
TextBoxRenderer
Przykłady
W poniższym przykładzie kodu pokazano, jak utworzyć niestandardową kontrolkę, która używa DrawTextBox metody do rysowania pola tekstowego. Kontrolka umożliwia również użytkownikowi wybranie jednej z TextFormatFlags wartości, które mają być stosowane do tekstu pola tekstowego.
#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
Uwagi
Klasa TextBoxRenderer udostępnia zestaw static
metod, których można użyć do renderowania kontrolki pola tekstowego przy użyciu bieżącego stylu wizualnego systemu operacyjnego. Renderowanie kontrolki odwołuje się do rysowania interfejsu użytkownika kontrolki. Jest to przydatne, jeśli rysujesz niestandardową kontrolkę, która powinna mieć wygląd bieżącego stylu wizualizacji. Aby narysować pole tekstowe, użyj jednej z DrawTextBox metod. Metody te zapewniają różne opcje, takie jak stosowanie formatowania tekstu lub określanie granic tekstu.
Jeśli style wizualne są włączone w systemie operacyjnym, a style wizualne są stosowane do obszaru klienta okien aplikacji, DrawTextBox spowoduje narysowanie pola tekstowego z bieżącym stylem wizualizacji. DrawTextBox W przeciwnym razie zostanie zgłoszony element InvalidOperationException. Aby określić, czy można użyć składowych IsSupported tej klasy, możesz sprawdzić wartość właściwości.
Ta klasa opakowuje funkcjonalność System.Windows.Forms.VisualStyles.VisualStyleRenderer klasy, która jest ustawiona na jeden z elementów System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox.TextEdit klasy. Aby uzyskać więcej informacji, zobacz Renderowanie kontrolek za pomocą stylów wizualnych.
Właściwości
IsSupported |
Pobiera wartość wskazującą, czy TextBoxRenderer klasa może służyć do rysowania pola tekstowego ze stylami wizualnymi. |
Metody
DrawTextBox(Graphics, Rectangle, String, Font, Rectangle, TextBoxState) |
Rysuje kontrolkę pola tekstowego w określonym stanie i granicach oraz z określonymi granicami tekstowymi i tekstowymi. |
DrawTextBox(Graphics, Rectangle, String, Font, Rectangle, TextFormatFlags, TextBoxState) |
Rysuje kontrolkę pola tekstowego w określonym stanie i granicach oraz z określonym tekstem, granicami tekstu i formatowaniem tekstu. |
DrawTextBox(Graphics, Rectangle, String, Font, TextBoxState) |
Rysuje kontrolkę pola tekstowego w określonym stanie i granicach oraz z określonym tekstem. |
DrawTextBox(Graphics, Rectangle, String, Font, TextFormatFlags, TextBoxState) |
Rysuje kontrolkę pola tekstowego w określonym stanie i granicach oraz z określonym formatowaniem tekstu i tekstu. |
DrawTextBox(Graphics, Rectangle, TextBoxState) |
Rysuje kontrolkę pola tekstowego w określonym stanie i granicach. |