1、命名空间与继承
命名空间:System.Windows.Forms
继承:Object→MarshalByRefObject→Component→Control→TextBoxBase→TextBox[RichTextBox]
TextBox常用于从用户处获取简短的文本字符串,而RichTextBox用于显
示和输入格式化的文本(例如, 黑体、 下划线和斜体),它使用标准的格式化文本,称为Rich Text
Format(富文本格式)或RTF。
2、常用属性
方法 | 作用 |
---|---|
Clear() | 从文本框控件中清除所有文本 |
CausesValidation | 设置为true,且该控件获得焦点,引发Validating和Validated两个事件 |
CharacterCasing | 这个值表示TextBox是否会改变输入的文本的大小写 |
MaxLength | TextBox输入最大长度 |
Multiine | TextBox是否可以多行 |
PasswordChar | 是否为加密字符[UseSystemPasswordChar也可以] |
ReadOnly | TextBox是否只读 |
ScrollBars | 是否显示滚动条 |
SelectedText | 在文本框种选择的文本 |
SelectionLength | 在文本框种选择的字符数 |
SelectionStart | 被选中文本的开头 |
WordWrap | 是否自动换行 |
注意RichTextBox中LoadFile()和SaveFile()保存富文本框中的文本格式。
3、常用事件
Event | 作用 |
---|---|
Clear() | 从文本框控件中清除所有文本 |
OnTextChanged(EventArgs) | 从文本框控件中清除所有文本 |
Enter | 从文本框控件中清除所有文本 |
Leave | 从文本框控件中清除所有文本 |
Validating | 从文本框控件中清除所有文本 |
Validated | 从文本框控件中清除所有文本 |
键事件 | – |
KeyDown | 按下对应键 |
KeyUp | 抬起对应键 |
KeyPress |
接受按下键对应建码 |
C#中Validating和Validated事件
如果 CausesValidation 属性设置为 false,则将取消 Validating 和 Validated 事件
焦点事件按下列顺序发生:
Enter //进入控件时发生
GotFocus //在控件接收焦点时发生
Leave //输入焦点离开控件时发生
Validating //控件数据效验时发生
Validated //数据效验完成后发生
LostFocus //失去焦点时发生
Validating 发生的时候,值还没有真正存入。如果验证失败,设置参数e.cancel = true。
Validated 发生的时候,值已经存入。
不管是Validating还是Validated事件发生的时候控件都没有失去焦点。
所以如果Validating验证错误,e.cancel = true会导致陷入死循环,焦点始终在上面,无法关闭软件。可以在Validating验证满足某条件,令e.cancel = false,强制退出。
4、示例
注意:
Validating事件中e.Cancel = true; 可以取消操作。如不符合要求的输入取消。
//Validating事件textBox中无法输入大于10的数
private void textBox2_Validating(object sender, CancelEventArgs e)
{
Console.WriteLine("textBox2_Validating");
if (Convert.ToInt32(this.textBox2.Text) > 10)
{
e.Cancel = true;
}
}
KeyPress事件
设置为Handled为true取消KeyPress事件。 这样,控件就不处理键按下。
//KeyPress事件 只允许输入0-9的键盘数字,或者BackSpace退格键
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8)
{
e.Handled = true; // Remove the character
Console.WriteLine("删除");
}
else
{
Console.WriteLine("保留");
}
}
RichTextBox富文本控件中设置粗体,斜体,下划线
//设置粗体
private void button5_Click(object sender, EventArgs e)
{
Font oldfont = this.richTextBox1.SelectionFont;
Font newfont;
if(oldfont.Bold)
{
newfont = new Font(oldfont,oldfont.Style & ~FontStyle.Bold);
}
else
{
newfont = new Font(oldfont, oldfont.Style | FontStyle.Bold);
}
this.richTextBox1.SelectionFont = newfont;
this.richTextBox1.Focus();
}
//设置斜体
private void button7_Click(object sender, EventArgs e)
{
Font oldfont;
Font newfont;
oldfont = this.richTextBox1.SelectionFont;
if (oldfont.Italic)
{
newfont = new Font(oldfont, oldfont.Style & ~FontStyle.Italic);
}
else
{
newfont = new Font(oldfont, oldfont.Style | FontStyle.Italic);
}
this.richTextBox1.SelectionFont = newfont;
this.richTextBox1.Focus();
}
//设置下划线
private void button6_Click(object sender, EventArgs e)
{
Font oldfont;
Font newfont;
oldfont = this.richTextBox1.SelectionFont;
if (oldfont.Underline)
{
newfont = new Font(oldfont, oldfont.Style & ~FontStyle.Underline);
}
else
{
newfont = new Font(oldfont,oldfont.Style | FontStyle.Underline);
}
this.richTextBox1.SelectionFont = newfont;
this.richTextBox1.Focus();
//设置RichTextBook中间对齐
private void button8_Click(object sender, EventArgs e)
{
//剧中
if(this.richTextBox1.SelectionAlignment == HorizontalAlignment.Center)
{
this.richTextBox1.SelectionAlignment = HorizontalAlignment.Left;
}
else
{
this.richTextBox1.SelectionAlignment= HorizontalAlignment.Center;
}
this.richTextBox1.Focus();
}
}
RichTextBox保存文本格式
private void button9_Click(object sender, EventArgs e)
{
// Load the file into the RichTextBox.
try
{
this.richTextBox1.LoadFile("Test.rtf");
}
catch (System.IO.FileNotFoundException)
{
MessageBox.Show("No file to load yet");
}
}
private void button10_Click(object sender, EventArgs e)
{
// Save the text.
try
{
this.richTextBox1.SaveFile("Test.rtf");
}
catch (System.Exception err)
{
MessageBox.Show(err.Message);
}
}