马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
C# 窗体与控件详解
1. Windows Forms 窗体底子
窗体(Form) 是 Windows 应用步伐的基本容器,用于承载控件并处理用户交互。
- 创建窗体项目:
- 在 Visual Studio 中选择“Windows Forms App (.NET Framework)”模板。
- 默认生成 Form1.cs(设计界面)和 Form1.Designer.cs(自动生成代码)。
- 常用属性:
- Text:窗体标题。
- Size:窗体尺寸。
- StartPosition:窗体首次表现的位置(如 CenterScreen)。
- FormBorderStyle:边框样式(如 FixedDialog 禁用调整巨细)。
- 窗体变乱:
- [/code] csharp
- [code]private void Form1_Load(object sender, EventArgs e) { } // 窗体加载时触发
- private void Form1_FormClosing(object sender, FormClosingEventArgs e) { } // 关闭前触发
复制代码 - 表现窗体:
- 主窗体在 Program.cs 中通过 Application.Run(new Form1()); 启动。
- 模态对话框:form.ShowDialog()(阻塞其他窗口)。
- 非模态窗口:form.Show()。
2. 常用控件详解
2.1 Label 控件
- 属性:
- Text:表现的文本。
- Font:字体样式。
- ForeColor:文字颜色。
2.2 TextBox 控件
- 属性:
- Multiline:允许多行输入。
- PasswordChar:设置为 * 可隐藏输入(如密码框)。
- 变乱:
- [/code] csharp
- [code]private void textBox1_TextChanged(object sender, EventArgs e)
- {
- label1.Text = $"输入长度:{textBox1.Text.Length}";
- }
复制代码 2.3 Button 控件
- 变乱:
- [/code] csharp
- [code]private void button1_Click(object sender, EventArgs e)
- {
- MessageBox.Show("按钮被点击!");
- }
复制代码 2.4 ComboBox 和 ListBox
- 添加项:
- [/code] csharp
- [code]comboBox1.Items.Add("选项1");
- listBox1.Items.AddRange(new[] { "Item1", "Item2" });
复制代码 - 获取选中项:
- [/code] csharp
- [code]string selected = comboBox1.SelectedItem.ToString();
复制代码 2.5 DataGridView
- 绑定数据:
- [/code] csharp
- [code]dataGridView1.DataSource = new BindingList<Person>(personsList);
复制代码 3. 布局管理
- Anchor 和 Dock:
- Anchor:控件随窗体调整位置(如靠右、底部)。
- Dock:控件添补到父容器的某侧(如 DockStyle.Top)。
- 布局容器:
- Panel/GroupBox:分组控件。
- FlowLayoutPanel:自动横向或纵向排列控件。
- TableLayoutPanel:网格布局,支持行列比例。
4. 变乱处理
- 变乱参数:
- KeyPressEventArgs:获取按下的键。
- [/code] csharp
- [code]private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
- {
- if (!char.IsDigit(e.KeyChar)) e.Handled = true; // 只允许数字输入
- }
复制代码
- 多变乱共享处理:
- [/code] csharp
- [code]private void HandleButtonClick(object sender, EventArgs e)
- {
- Button btn = (Button)sender;
- btn.Text = "已点击";
- }
- // 将多个按钮的 Click 事件指向同一方法
复制代码 5. 数据绑定与验证
- 简单绑定:
- [/code] csharp
- [code]textBox1.DataBindings.Add("Text", person, "Name");
复制代码 - ErrorProvider 验证:
- [/code] csharp
- [code]private void textBox1_Validating(object sender, CancelEventArgs e)
- {
- if (string.IsNullOrEmpty(textBox1.Text))
- errorProvider1.SetError(textBox1, "不能为空!");
- else
- errorProvider1.Clear();
- }
复制代码 6. 自界说控件
- 创建用户控件:
- 右键项目 → 添加 → 用户控件(.cs)。
- 拖放控件并添加逻辑。
- [/code] csharp
- [code]public partial class MyCustomControl : UserControl
- {
- public MyCustomControl() { InitializeComponent(); }
- }
复制代码
- 扩展现有控件:
- [/code] csharp
- [code]public class NumericTextBox : TextBox
- {
- protected override void OnKeyPress(KeyPressEventArgs e)
- {
- if (!char.IsDigit(e.KeyChar)) e.Handled = true;
- base.OnKeyPress(e);
- }
- }
复制代码 7. 高级主题
- 多线程更新 UI:
- [/code] csharp
- [code]private void UpdateStatus(string message)
- {
- if (InvokeRequired)
- Invoke(new Action(() => label1.Text = message));
- else
- label1.Text = message;
- }
复制代码 - 不规则窗体:
- [/code] csharp
- [code]this.FormBorderStyle = FormBorderStyle.None;
- this.Region = new Region(new Rectangle(0, 0, 200, 200)); // 自定义形状
复制代码 8. 实战示例:登录窗体
- [/code] csharp
- [code]public partial class LoginForm : Form
- {
- public LoginForm() { InitializeComponent(); }
- private void btnLogin_Click(object sender, EventArgs e)
- {
- if (txtUser.Text == "admin" && txtPass.Text == "123")
- DialogResult = DialogResult.OK;
- else
- MessageBox.Show("登录失败!");
- }
- }
复制代码 总结
通过系统学习窗体属性、控件利用、布局管理、变乱处理及数据绑定,开发者可以或许构建功能丰富、用户友爱的 Windows 应用步伐。联合自界说控件和高级技能,可进一步提拔界面体验和功能性。发起通过现实项目训练,加深对各个知识点的掌握。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |