| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 
 | using System;using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Drawing;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
 
 namespace BubbleMessage
 {
 public class MyTextBox : UserControl
 {
 public MyTextBox()
 {
 InitializeComponent();
 }
 
 protected override void OnLayout(LayoutEventArgs e)
 {
 base.OnLayout(e);
 
 //获取子控件
 if (this.Controls.Count == 0) return;
 Control c = this.Controls[0];
 
 //父窗口参数
 Padding p = this.Padding;
 int x = 0, y = 0;
 int w = this.Width, h = this.Height;
 w -= (p.Left + p.Right);
 x += p.Left;
 
 //计算文本框的高度,使其显示在中间
 int h2 = c.PreferredSize.Height;
 if (h2 > h) h2 = h;
 y = (h - h2) / 2;
 
 c.Location = new Point(x, y);
 c.Size = new Size(w, h2);
 }
 
 
 public event EventHandler ReturnPressed;
 
 /// <summary>
 /// 必需的设计器变量。
 /// </summary>
 private System.ComponentModel.IContainer components = null;
 
 /// <summary>
 /// 清理所有正在使用的资源。
 /// </summary>
 /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 protected override void Dispose(bool disposing)
 {
 if (disposing && (components != null))
 {
 components.Dispose();
 }
 base.Dispose(disposing);
 }
 
 #region 组件设计器生成的代码
 
 /// <summary>
 /// 设计器支持所需的方法 - 不要修改
 /// 使用代码编辑器修改此方法的内容。
 /// </summary>
 private void InitializeComponent()
 {
 this.edit = new System.Windows.Forms.TextBox();
 this.SuspendLayout();
 //
 // edit
 //
 this.edit.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
 | System.Windows.Forms.AnchorStyles.Left)
 | System.Windows.Forms.AnchorStyles.Right)));
 this.edit.BackColor = System.Drawing.Color.White;
 this.edit.BorderStyle = System.Windows.Forms.BorderStyle.None;
 this.edit.Location = new System.Drawing.Point(3, 17);
 this.edit.Name = "edit";
 this.edit.Size = new System.Drawing.Size(336, 18);
 this.edit.TabIndex = 0;
 this.edit.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.edit_KeyPress);
 //
 // MyTextBox
 //
 this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
 this.BackColor = System.Drawing.Color.White;
 this.Controls.Add(this.edit);
 this.Name = "MyTextBox";
 this.Size = new System.Drawing.Size(344, 53);
 this.ResumeLayout(false);
 this.PerformLayout();
 
 }
 
 #endregion
 
 private System.Windows.Forms.TextBox edit;
 
 private void edit_KeyPress(object sender, KeyPressEventArgs e)
 {
 if (e.KeyChar == '\r')
 {
 ReturnPressed?.Invoke(this, e);
 }
 }
 
 public override string Text
 {
 get { return edit.Text; }
 set
 {
 edit.Text = value;
 }
 }
 
 
 public override Color BackColor
 {
 get { return base.BackColor; }
 set
 {
 edit.BackColor = value;
 base.BackColor = value;
 }
 }
 }
 }
 
 
 |