TextBoxRenderer Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan metode yang digunakan untuk merender kontrol kotak teks dengan gaya visual. Kelas ini tidak dapat diwariskan.
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
- Warisan
-
TextBoxRenderer
Contoh
Contoh kode berikut menunjukkan cara membuat kontrol kustom yang menggunakan DrawTextBox metode untuk menggambar kotak teks. Kontrol juga memungkinkan pengguna untuk memilih salah TextFormatFlags satu nilai yang akan diterapkan ke teks kotak teks.
#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
Keterangan
Kelas ini TextBoxRenderer menyediakan sekumpulan static metode yang dapat digunakan untuk merender kontrol kotak teks dengan gaya visual sistem operasi saat ini. Merender kontrol mengacu pada menggambar antarmuka pengguna kontrol. Ini berguna jika Anda menggambar kontrol kustom yang harus memiliki tampilan gaya visual saat ini. Untuk menggambar kotak teks, gunakan salah DrawTextBox satu metode. Metode ini menyediakan berbagai opsi, seperti menerapkan pemformatan teks atau menentukan batas teks.
Jika gaya visual diaktifkan dalam sistem operasi dan gaya visual diterapkan ke area klien jendela aplikasi, DrawTextBox akan menggambar kotak teks dengan gaya visual saat ini. Jika tidak, DrawTextBox akan melempar .InvalidOperationException Untuk menentukan apakah anggota kelas ini dapat digunakan, Anda dapat memeriksa nilai IsSupported properti.
Kelas ini membungkus fungsionalitas System.Windows.Forms.VisualStyles.VisualStyleRenderer yang diatur ke salah satu elemen System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox.TextEdit kelas. Untuk informasi selengkapnya, lihat Kontrol Penyajian dengan Gaya Visual.
Properti
| Nama | Deskripsi |
|---|---|
| IsSupported |
Mendapatkan nilai yang menunjukkan apakah TextBoxRenderer kelas dapat digunakan untuk menggambar kotak teks dengan gaya visual. |
Metode
| Nama | Deskripsi |
|---|---|
| DrawTextBox(Graphics, Rectangle, String, Font, Rectangle, TextBoxState) |
Menggambar kontrol kotak teks dalam status dan batas yang ditentukan, dan dengan batas teks dan teks yang ditentukan. |
| DrawTextBox(Graphics, Rectangle, String, Font, Rectangle, TextFormatFlags, TextBoxState) |
Menggambar kontrol kotak teks dalam status dan batas yang ditentukan, dan dengan teks, batas teks, dan pemformatan teks yang ditentukan. |
| DrawTextBox(Graphics, Rectangle, String, Font, TextBoxState) |
Menggambar kontrol kotak teks dalam status dan batas yang ditentukan, dan dengan teks yang ditentukan. |
| DrawTextBox(Graphics, Rectangle, String, Font, TextFormatFlags, TextBoxState) |
Menggambar kontrol kotak teks dalam status dan batas yang ditentukan, dan dengan pemformatan teks dan teks yang ditentukan. |
| DrawTextBox(Graphics, Rectangle, TextBoxState) |
Menggambar kontrol kotak teks dalam status dan batas yang ditentukan. |