C# WinForm 界面控件
C# WinForm是一种GUI应用程序框架,它允许开发人员使用各种控件来创建丰富的用户界面。以下是一些C# WinForm中常见的界面控件:这些界面控件在C# WinForm应用程序开发中非常常见,开发人员可以借助它们来快速创建各种类型的用户界面。
- Button:按钮控件,用于添加按钮到用户界面以执行操作。
- Label:标签控件,用于在用户界面上显示文本。
- TextBox:文本框控件,允许用户输入文本信息。
- ComboBox:组合框控件,用于在下拉列表中显示选项。
- ListBox:列表框控件,用于在列表中显示多个选项。
- RadioButton:单选按钮控件,可供用户进行单选选择。
- CheckBox:复选框控件,可供用户进行多选选择。
- DateTimePicker:日期时间选择控件,允许用户选择日期和时间。
- ProgressBar:进度条控件,用于显示操作进度。
按钮与编辑框的使用
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int start = int.Parse(textBox1.Text);
int end = int.Parse(textBox2.Text);
for (int x = start; x < end; x++)
{
progressBar1.Value += 1;
Thread.Sleep(100);
}
}
}
}
listView
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;
using System.Threading;
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
ColumnHeader Uid = new ColumnHeader();
Uid.Text = "UID";
Uid.Width = 100;
Uid.TextAlign = HorizontalAlignment.Left;
this.listView1.Columns.Add(Uid);
ColumnHeader Uname = new ColumnHeader();
Uname.Text = "UNAME";
Uname.Width = 100;
Uname.TextAlign = HorizontalAlignment.Left;
this.listView1.Columns.Add(Uname);
ColumnHeader Uage = new ColumnHeader();
Uage.Text = "UAGE";
Uage.Width = 100;
Uage.TextAlign = HorizontalAlignment.Left;
this.listView1.Columns.Add(Uage);
}
private void button1_Click(object sender, EventArgs e)
{
// tianjia shuju
this.listView1.BeginUpdate(); //数据更新,UI暂时挂起
this.listView1.Items.Clear(); //只移除所有的项。
for (int x = 0; x < 100; x++)
{
ListViewItem lv = new ListViewItem();
lv.ImageIndex = x;
lv.Text = "UUID -> " + x;
lv.SubItems.Add("第2列");
lv.SubItems.Add("第3列" + x + "行");
this.listView1.Items.Add(lv);
}
this.listView1.EndUpdate(); //结束数据处理,UI界面一次性绘制。
}
}
}
MID 窗体设计:
1.首先插入新的子窗体form1,并设置IsMdiContainer = True 属性。
2.zi chuang ti bing she zhi ta men de fu chuang ti
form1.cs
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show();
frm2.MdiParent = this;
// pai lie
LayoutMdi(MdiLayout.TileHorizontal);
}
}
}
ji suan qi
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 练习25
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.SelectedIndex = 0;
}
private void button1_Click(object sender, EventArgs e)
{
try
{
int n1 = Convert.ToInt32(textBox1.Text.Trim());
int n2 = Convert.ToInt32(textBox2.Text.Trim());
string oper = comboBox1.SelectedItem.ToString();
switch (oper)
{
case "+": label1.Text = (n1 + n2).ToString();
break;
case "-": label1.Text = (n1 - n2).ToString();
break;
case "*": label1.Text = (n1 * n2).ToString();
break;
case "/": label1.Text = (n1 / n2).ToString();
break;
default: MessageBox.Show("请选择正确的操作符");
break;
}
}
catch
{
MessageBox.Show("请输入正确的数字");
}
}
}
}
浏览器控件的使用
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 _03_浏览器控件
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string text = textBox1.Text;
Uri uri = new Uri("http://"+text);
webBrowser1.Url = uri;
}
}
}
ComboBox 控件
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 _04ComboBox
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//通过代码给下拉框添加数据
comboBox2.Items.Add("张三");
comboBox2.Items.Add("李四");
comboBox2.Items.Add("王五");
}
private void button2_Click(object sender, EventArgs e)
{
comboBox2.Items.Clear();
}
}
}
ComboBox 日期时间控件
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 _05日期选择器
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//程序加载的时候 将年份添加到下拉框中
//获得当前的年份
int year = DateTime.Now.Year;
for (int i = year; i >= 1949; i--)
{
cboYear.Items.Add(i + "年");
}
}
/// 当年份发生改变的时候 加载月份
private void cboYear_SelectedIndexChanged(object sender, EventArgs e)
{
//添加之前应该清空之前的内容
cboMonth.Items.Clear();
for (int i = 1; i <= 12; i++)
{
cboMonth.Items.Add(i + "月");
}
}
/// 当月份发生改变的时候 加载天
private void cboMonth_SelectedIndexChanged(object sender, EventArgs e)
{
cboDays.Items.Clear();
int day = 0;//定义一个变量来存储天数
//获得月份 7月 12
string strMonth = cboMonth.SelectedItem.ToString().Split(new char[] { '月' }, StringSplitOptions.RemoveEmptyEntries)[0];
string strYear = cboYear.SelectedItem.ToString().Split(new char[] { '年' }, StringSplitOptions.RemoveEmptyEntries)[0];
// MessageBox.Show(cboMonth.SelectedItem.ToString());
int year = Convert.ToInt32(strYear);
int month = Convert.ToInt32(strMonth);
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: day = 31;
break;
case 2:
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
{
day = 29;
}
else
{
day = 28;
}
break;
default: day = 30;
break;
}
for (int i = 1; i <= day; i++)
{
cboDays.Items.Add(i + "日");
}
}
}
}
ListBox 遍历与选中
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 _06ListBox控件
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.Add(1);
listBox1.Items.Add(200000);
}
// 遍历选中
private void button1_Click(object sender, EventArgs e)
{
for(int x=0;x<listBox1.Items.Count;x++)
{
if (listBox1.SelectedItems.Contains(listBox1.Items[x]))
{
MessageBox.Show(listBox1.Items[x].ToString());
}
}
}
}
}
实现图片预览: 左面ListBox控件,右面是一个pictureBox控件。
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;
using System.IO;
namespace _07实现点击更换照片
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//用来存储图片文件的全路径
List<string> list = new List<string>();
private void Form1_Load(object sender, EventArgs e)
{
string[] path = Directory.GetFiles(@"C:\", "*.jpg");
for (int i = 0; i < path.Length; i++)
{
string fileName = Path.GetFileName(path[i]);
listBox1.Items.Add(fileName);
//将图片的全路径添加到List泛型集合中
list.Add(path[i]);
//listBox1.Items.Add(path[i]);
}
}
/// 双击播放图片
private void listBox1_DoubleClick(object sender, EventArgs e)
{
pictureBox1.Image = Image.FromFile(list[listBox1.SelectedIndex]);
}
}
}
双击播放音乐:
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;
using System.IO;
using System.Media;
namespace _08双击播放音乐
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//存储音乐文件的全路径
List<string> listSongs = new List<string>();
private void Form1_Load(object sender, EventArgs e)
{
string[] path = Directory.GetFiles(@"C:\Music", "*.wav");
for (int i = 0; i < path.Length; i++)
{
string fileName = Path.GetFileName(path[i]);
listBox1.Items.Add(fileName);
//将音乐文件的全路径存到泛型集合中
listSongs.Add(path[i]);
}
}
private void listBox1_DoubleClick(object sender, EventArgs e)
{
SoundPlayer sp = new SoundPlayer();
sp.SoundLocation=listSongs[listBox1.SelectedIndex];
sp.Play();
}
}
}
打开一个txt文件(打开文件对话框): 一个放大了的textbox
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;
using System.IO;
namespace _10打开对话框
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//点击弹出对话框
OpenFileDialog ofd = new OpenFileDialog();
//设置对话框的标题
ofd.Title = "请选择要打开的文本";
//设置对话框可以多选
ofd.Multiselect = true;
//设置对话框的初始目录
ofd.InitialDirectory = @"C:\";
//设置对话框的文件类型
ofd.Filter = "文本文件|*.txt|媒体文件|*.wmv|图片文件|*.jpg|所有文件|*.*";
//展示对话框
ofd.ShowDialog();
//获得在打开对话框中选中文件的路径
string path = ofd.FileName;
if (path == "")
{
return;
}
using (FileStream fsRead = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read))
{
byte[] buffer = new byte[1024 * 1024 * 5];
//实际读取到的字节数
int r = fsRead.Read(buffer, 0, buffer.Length);
textBox1.Text = Encoding.Default.GetString(buffer, 0, r);
}
}
}
}
保存文件对话框:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace _11_保存文件对话框
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "请选择要保存的路径";
sfd.InitialDirectory = @"C:\";
sfd.Filter = "文本文件|*.txt|所有文件|*.*";
sfd.ShowDialog();
//获得保存文件的路径
string path = sfd.FileName;
if (path == "")
{
return;
}
using (FileStream fsWrite = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
{
byte[] buffer = Encoding.Default.GetBytes(textBox1.Text);
fsWrite.Write(buffer, 0, buffer.Length);
}
MessageBox.Show("保存成功");
}
}
}
字体颜色对话框
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 _12_字体和颜色对话框
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// 字体对话框
private void button1_Click(object sender, EventArgs e)
{
FontDialog fd = new FontDialog();
fd.ShowDialog();
textBox1.Font = fd.Font;
}
private void button2_Click(object sender, EventArgs e)
{
ColorDialog cd = new ColorDialog();
cd.ShowDialog();
textBox1.ForeColor = cd.Color;
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
panel 显示隐藏面板
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 _13_Panel
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
panel1.Visible = true;
}
private void button2_Click(object sender, EventArgs e)
{
panel1.Visible = false;
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
简易记事本
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace _14_记事儿本应用程序
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//加载程序的时候 隐藏panel
panel1.Visible = false;
//取消文本框的自动换行功能
textBox1.WordWrap = false;
}
/// 点击按钮的时候 隐藏panel
private void button1_Click(object sender, EventArgs e)
{
panel1.Visible = false;
}
private void 显示ToolStripMenuItem_Click(object sender, EventArgs e)
{
panel1.Visible = true;
}
private void 影藏ToolStripMenuItem_Click(object sender, EventArgs e)
{
panel1.Visible = false;
}
List<string> list = new List<string>();
/// 打开对话框
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "请选择要打开的文本文件";
ofd.InitialDirectory = @"C:\Users\SpringRain\Desktop";
ofd.Multiselect = true;
ofd.Filter = "文本文件|*.txt|所有文件|*.*";
ofd.ShowDialog();
//获得用户选中的文件的路径
string path = ofd.FileName;
//将文件的全路径存储到泛型集合中
list.Add(path);
//获得了用户打开文件的文件名
string fileName = Path.GetFileName(path);
//将文件名放到ListBox中
listBox1.Items.Add(fileName);
if (path == "")
{
return;
}
using (FileStream fsRead = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read))
{
byte[] buffer = new byte[1024 * 1024 * 5];
int r = fsRead.Read(buffer, 0, buffer.Length);
textBox1.Text = Encoding.Default.GetString(buffer, 0, r);
}
}
/// 保存对话框
private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.InitialDirectory = @"C:\Users\SpringRain\Desktop";
sfd.Title = "请选择要保存的文件路径";
sfd.Filter = "文本文件|*.txt|所有文件|*.*";
sfd.ShowDialog();
//获得用户要保存的文件的路径
string path = sfd.FileName;
if (path == "")
{
return;
}
using (FileStream fsWrite = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
{
byte[] buffer = Encoding.Default.GetBytes(textBox1.Text);
fsWrite.Write(buffer, 0, buffer.Length);
}
MessageBox.Show("保存成功");
}
private void 自动换行ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (自动换行ToolStripMenuItem.Text == "☆自动换行")
{
textBox1.WordWrap = true;
自动换行ToolStripMenuItem.Text = "★取消自动换行";
}
else if (自动换行ToolStripMenuItem.Text == "★取消自动换行")
{
textBox1.WordWrap = false;
自动换行ToolStripMenuItem.Text = "☆自动换行";
}
}
private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)
{
FontDialog fd = new FontDialog();
fd.ShowDialog();
textBox1.Font = fd.Font;
}
private void 颜色ToolStripMenuItem_Click(object sender, EventArgs e)
{
ColorDialog cd = new ColorDialog();
cd.ShowDialog();
textBox1.ForeColor = cd.Color;
}
/// 双击打开对应的文件
private void listBox1_DoubleClick(object sender, EventArgs e)
{
//要获得双击的文件所对应的全路径
string path = list[listBox1.SelectedIndex];
using (FileStream fsRead = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read))
{
byte[] buffer = new byte[1024 * 1024 * 5];
int r = fsRead.Read(buffer, 0, buffer.Length);
textBox1.Text = Encoding.Default.GetString(buffer, 0, r);
}
}
}
}
音乐选择框
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;
using System.IO;
using System.Media;
namespace _01复习
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//用来存储音乐文件的全路径
List<string> listSongs = new List<string>();
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "请选择音乐文件";
ofd.InitialDirectory = @"C:\Users\SpringRain\Desktop\Music";
ofd.Multiselect = true;
ofd.Filter = "音乐文件|*.wav|所有文件|*.*";
ofd.ShowDialog();
//获得我们在文件夹中选择所有文件的全路径
string[] path = ofd.FileNames;
for (int i = 0; i < path.Length; i++)
{
//将音乐文件的文件名加载到ListBox中
listBox1.Items.Add(Path.GetFileName(path[i]));
//将音乐文件的全路径存储到泛型集合中
listSongs.Add(path[i]);
}
}
/// 实现双击播放
SoundPlayer sp = new SoundPlayer();
private void listBox1_DoubleClick(object sender, EventArgs e)
{
sp.SoundLocation=listSongs[listBox1.SelectedIndex];
sp.Play();
}
/// 点击下一曲
private void button3_Click(object sender, EventArgs e)
{
//获得当前选中歌曲的索引
int index = listBox1.SelectedIndex;
index++;
if (index == listBox1.Items.Count)
{
index = 0;
}
//将改变后的索引重新的赋值给我当前选中项的索引
listBox1.SelectedIndex = index;
sp.SoundLocation = listSongs[index];
sp.Play();
}
/// 点击上一曲
private void button2_Click(object sender, EventArgs e)
{
int index = listBox1.SelectedIndex;
index--;
if (index < 0)
{
index = listBox1.Items.Count-1;
}
//将重新改变后的索引重新的赋值给当前选中项
listBox1.SelectedIndex = index;
sp.SoundLocation = listSongs[index];
sp.Play();
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
标签与随机数:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace _05_摇奖机应用程序
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
bool b = false;
private void button1_Click(object sender, EventArgs e)
{
if (b == false)
{
b = true;
button1.Text = "停止";
Thread th = new Thread(PlayGame);
th.IsBackground = true;
th.Name = "新线程";
// th.
th.Start();
}
else//b==true
{
b = false;
button1.Text = "开始";
}
//PlayGame();
}
private void PlayGame()
{
Random r = new Random();
while (b)
{
label1.Text = r.Next(0, 10).ToString();
label2.Text = r.Next(0, 10).ToString();
label3.Text = r.Next(0, 10).ToString();
}
}
private void Form1_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
}
}
}
Socket - client
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Client
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Socket socket;
private void btnStart_Click(object sender, EventArgs e)
{
try
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ip = IPAddress.Parse(txtServer.Text);
IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text));
socket.Connect(point);
ShowMsg("连接成功");
Thread th = new Thread(Rec);
th.IsBackground = true;
th.Start();
}
catch
{ }
}
void Rec()
{
while (true)
{
try
{
byte[] buffer = new byte[1024 * 1024 * 3];
int r = socket.Receive(buffer);
if (buffer[0] == 0)
{
string s = Encoding.UTF8.GetString(buffer, 1, r-1);
ShowMsg(s);
}
else if (buffer[0] == 1)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "所有文件|*.*";
sfd.ShowDialog(this);
string path = sfd.FileName;
using (FileStream fsWrite = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
{
fsWrite.Write(buffer, 1, r - 1);
}
MessageBox.Show("保存成功");
}
else
{
ZD();
}
}
catch
{
}
}
}
void ZD()
{
for (int i = 0; i < 500; i++)
{
this.Location = new Point(200, 200);
this.Location = new Point(210, 210);
}
}
void ShowMsg(string str)
{
txtLog.AppendText(str + "\r\n");
}
/// 给服务器发送消息
private void btnSend_Click(object sender, EventArgs e)
{
byte[] buffer = Encoding.UTF8.GetBytes(txtMsg.Text);
socket.Send(buffer);
}
private void Form1_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
}
}
}
socket-server
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Server
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnStart_Click(object sender, EventArgs e)
{
try
{
Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ip = IPAddress.Any;//IPAddress.Parse(txtServer.Text);
IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text));
socketWatch.Bind(point);
ShowMsg("监听成功");
//去厕所蹲坑
socketWatch.Listen(10);
//不停的接收客户端的连接
Thread th = new Thread(Listen);
th.IsBackground = true;
th.Start(socketWatch);
}
catch
{ }
}
Dictionary<string, Socket> dicSocket = new Dictionary<string, Socket>();
void Listen(object o)
{
Socket socketWatch = o as Socket;
while (true)
{
//循环的接收客户端的连接
Socket socketSend = socketWatch.Accept();
//将客户端的IP地址存储到下拉框中
cboUsers.Items.Add(socketSend.RemoteEndPoint.ToString());
//将IP地址和这个客户端的Socket放到键值对集合中
dicSocket.Add(socketSend.RemoteEndPoint.ToString(), socketSend);
ShowMsg(socketSend.RemoteEndPoint.ToString() + ":" + "连接成功");
//客户端连接成功后,就应高接收客户端发来的消息
Thread th = new Thread(Rec);
th.IsBackground = true;
th.Start(socketSend);
}
}
void Rec(object o)
{
Socket socketSend = o as Socket;
while (true)
{
try
{
byte[] buffer = new byte[1024 * 1024 * 3];
int r = socketSend.Receive(buffer);
string str = Encoding.UTF8.GetString(buffer, 0, r);
ShowMsg(socketSend.RemoteEndPoint.ToString() + ":" + str);
}
catch
{ }
}
}
void ShowMsg(string str)
{
txtLog.AppendText(str + "\r\n");
}
private void Form1_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
}
/// 服务器给客户端发送消息
private void btnSend_Click(object sender, EventArgs e)
{
byte[] buffer = Encoding.UTF8.GetBytes(txtMsg.Text);
//获得客户端的ip
string ip = cboUsers.SelectedItem.ToString();
List<byte> list = new List<byte>();
list.Add(0);
list.AddRange(buffer);
byte[] newBuffer = list.ToArray();
dicSocket[ip].Send(newBuffer);
}
private void btnSelect_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "所有文件|*.*";
ofd.ShowDialog();
txtPath.Text = ofd.FileName;
}
private void btnSendFile_Click(object sender, EventArgs e)
{
string path = txtPath.Text;
using (FileStream fsRead = new FileStream(path, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[1024 * 1024 * 3];
int r = fsRead.Read(buffer, 0, buffer.Length);
List<byte> list = new List<byte>();
list.Add(1);
list.AddRange(buffer);
byte[] newBuffer = list.ToArray();
string ip = cboUsers.SelectedItem.ToString();
dicSocket[ip].Send(newBuffer, 0, r+1, SocketFlags.None);
}
}
private void btnZD_Click(object sender, EventArgs e)
{
byte[] buffer = new byte[1];
buffer[0] = 2;
string ip = cboUsers.SelectedItem.ToString();
dicSocket[ip].Send(buffer);
}
private void button1_Click(object sender, EventArgs e)
{
}
}
}
GDI 绘制登录验证码 需要一个pictureBox1控件
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 使用GDI绘制验证码
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// 点击更换验证码
private void pictureBox1_Click(object sender, EventArgs e)
{
Random r = new Random();
string str = null;
for (int i = 0; i < 5; i++)
{
int rNumber = r.Next(0, 10);
str += rNumber;
}
// MessageBox.Show(str);
//创建GDI对象
Bitmap bmp = new Bitmap(150, 40);
Graphics g = Graphics.FromImage(bmp);
for (int i = 0; i < 5; i++)
{
Point p = new Point(i * 20, 0);
string[] fonts = { "微软雅黑", "宋体", "黑体", "隶书", "仿宋" };
Color[] colors = { Color.Yellow, Color.Blue, Color.Black, Color.Red, Color.Green };
g.DrawString(str[i].ToString(), new Font(fonts[r.Next(0, 5)], 20, FontStyle.Bold), new SolidBrush(colors[r.Next(0, 5)]), p);
}
for (int i = 0; i < 20; i++)
{
Point p1=new Point(r.Next(0,bmp.Width),r.Next(0,bmp.Height));
Point p2=new Point(r.Next(0,bmp.Width),r.Next(0,bmp.Height));
g.DrawLine(new Pen(Brushes.Green), p1, p2);
}
for (int i = 0; i < 500; i++)
{
Point p=new Point(r.Next(0,bmp.Width),r.Next(0,bmp.Height));
bmp.SetPixel(p.X, p.Y, Color.Black);
}
//将图片镶嵌到PictureBox中
pictureBox1.Image = bmp;
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
GDI 图形绘制:
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 使用GDI绘制简单的图形
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//一根笔 颜色 一张纸 两点 绘制直线的对象
}
private void button1_Click(object sender, EventArgs e)
{
//创建GDI对象
Graphics g = this.CreateGraphics();// new Graphics();
//创建画笔对象
Pen pen = new Pen(Brushes.Red);
//创建两个点
Point p1 = new Point(30, 50);
Point p2 = new Point(250, 250);
g.DrawLine(pen, p1, p2);
}
int i = 0;
private void Form1_Paint(object sender, PaintEventArgs e)
{
i++;
label1.Text = i.ToString();
Graphics g = this.CreateGraphics();// new Graphics();
//创建画笔对象
Pen pen = new Pen(Brushes.Red);
//创建两个点
Point p1 = new Point(30, 50);
Point p2 = new Point(250, 250);
g.DrawLine(pen, p1, p2);
}
private void button2_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
Pen pen=new Pen(Brushes.Yellow);
Size size=new System.Drawing.Size(80,80);
Rectangle rec=new Rectangle(new Point(50,50),size);
g.DrawRectangle(pen,rec);
}
private void button3_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
Pen pen=new Pen(Brushes.Blue);
Size size=new System.Drawing.Size(180,180);
Rectangle rec=new Rectangle(new Point(150,150),size);
g.DrawPie(pen, rec, 60, 60);
}
private void button4_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
g.DrawString("百度网盘下载最快", new Font("宋体", 20, FontStyle.Underline), Brushes.Black, new Point(300, 300));
}
}
}
窗体传值:
form1.cs 只有一个 label1 和一个button
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 窗体传值
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2(ShowMsg);
frm2.Show();
}
void ShowMsg(string s)
{
label1.Text = s;
}
}
}
form2.cs 一个textbox1 和一个button
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 窗体传值
{
public delegate void DelStr(string s);
public partial class Form2 : Form
{
public DelStr _del;
// 子窗口中的del赋值给this._del 父窗体,完成的窗体进程数据传输。
public Form2(DelStr del)
{
this._del = del;
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// 给父窗体赋值
_del(textBox1.Text);
}
}
}
创建xml
using System.Xml;
通过代码来创建XML文档
XmlDocument doc = new XmlDocument();
创建第一个行描述信息,并且添加到doc文档中
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
创建根节点
XmlElement books = doc.CreateElement("Books");
将根节点添加到文档中
doc.AppendChild(books);
给根节点Books创建子节点
XmlElement book1 = doc.CreateElement("Book");
将book添加到根节点
books.AppendChild(book1);
给Book1添加子节点
XmlElement name1 = doc.CreateElement("Name");
name1.InnerText = "你好";
book1.AppendChild(name1);
写入一个XML
1、创建一个XML文档对象
XmlDocument doc = new XmlDocument();
2、创建第一行描述信息
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
3、将创建的第一行数据添加到文档中
doc.AppendChild(dec);
4、给文档添加根节点
XmlElement books = doc.CreateElement("Books");
5、将根节点添加给文档对象
doc.AppendChild(books);
6、给根节点添加子节点
XmlElement book1 = doc.CreateElement("Book");
将子节点book1添加到根节点下
books.AppendChild(book1);
7、给book1添加子节点
XmlElement bookName1 = doc.CreateElement("BookName");
8、设置标签中显示的文本
bookName1.InnerText = "水浒传";
book1.AppendChild(bookName1);
XmlElement author1 = doc.CreateElement("Author");
author1.InnerText = "<authorName>匿名</authorName>";
book1.AppendChild(author1);
XmlElement price1 = doc.CreateElement("Price");
price1.InnerXml = "<authorName>匿名</authorName>";
book1.AppendChild(price1);
XmlElement des1 = doc.CreateElement("Des");
des1.InnerXml = "好看";
book1.AppendChild(des1);
Console.WriteLine("保存成功");
doc.Save("Book.xml");
Console.ReadKey();
追加xml
追加XML文档
XmlDocument doc = new XmlDocument();
XmlElement books;
if (File.Exists("Books.xml"))
{
如果文件存在 加载XML
doc.Load("Books.xml");
获得文件的根节点
books = doc.DocumentElement;
}
else
{
如果文件不存在
创建第一行
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
创建跟节点
books = doc.CreateElement("Books");
doc.AppendChild(books);
}
5、给根节点Books创建子节点
XmlElement book1 = doc.CreateElement("Book");
将book添加到根节点
books.AppendChild(book1);
6、给Book1添加子节点
XmlElement name1 = doc.CreateElement("Name");
name1.InnerText = "c#开发大全";
book1.AppendChild(name1);
XmlElement price1 = doc.CreateElement("Price");
price1.InnerText = "110";
book1.AppendChild(price1);
XmlElement des1 = doc.CreateElement("Des");
des1.InnerText = "看不懂";
book1.AppendChild(des1);
doc.Save("Books.xml");
Console.WriteLine("保存成功");
Console.ReadKey();
读取XML
加载要读取的XML
XmlDocument doc = new XmlDocument();
doc.Load("Books.xml");
获得根节点
XmlElement books = doc.DocumentElement;
获得子节点 返回节点的集合
XmlNodeList xnl = books.ChildNodes;
foreach (XmlNode item in xnl)
{
Console.WriteLine(item.InnerText);
}
Console.ReadKey();
读取带属性的XML文档
XmlDocument doc = new XmlDocument();
doc.Load("Order.xml");
Xpath
XmlDocument doc = new XmlDocument();
doc.Load("Order.xml");
XmlNodeList xnl = doc.SelectNodes("/Order/Items/OrderItem");
foreach (XmlNode node in xnl)
{
Console.WriteLine(node.Attributes["Name"].Value);
Console.WriteLine(node.Attributes["Count"].Value);
}
Console.ReadKey();
改变属性的值
XmlDocument doc = new XmlDocument();
doc.Load("Order.xml");
XmlNode xn = doc.SelectSingleNode("/Order/Items/OrderItem[@Name='190']");
xn.Attributes["Count"].Value = "200";
xn.Attributes["Name"].Value = "颜世伟";
doc.Save("Order.xml");
Console.WriteLine("保存成功");
XmlDocument doc = new XmlDocument();
doc.Load("Order.xml");
XmlNode xn = doc.SelectSingleNode("/Order/Items");
xn.RemoveAll();
doc.Save("Order.xml");
Console.WriteLine("删除成功");
Console.ReadKey();
获得文档的根节点
xmlelement order = doc.documentelement;
xmlnodelist xnl = order.childnodes;
foreach (xmlnode item in xnl)
{
如果不是items 就continue
if (item[])
{
continue;
}
console.writeline(item.attributes["name"].value);
console.writeline(item.attributes["count"].value);
}
Console.ReadKey();
增删改查:
XMLDocument
#region 对xml文档实现追加的需求
XmlDocument doc = new XmlDocument();
首先判断xml文档是否存在 如果存在 则追加 否则创建一个
if (File.Exists("Student.xml"))
{
加载进来
doc.Load("Student.xml");
追加
获得根节点 给根节点添加子节点
XmlElement person = doc.DocumentElement;
XmlElement student = doc.CreateElement("Student");
student.SetAttribute("studentID", "10");
person.AppendChild(student);
XmlElement name = doc.CreateElement("Name");
name.InnerXml = "我是新来哒";
student.AppendChild(name);
XmlElement age = doc.CreateElement("Age");
age.InnerXml = "18";
student.AppendChild(age);
XmlElement gender = doc.CreateElement("Gender");
gender.InnerXml = "女";
student.AppendChild(gender);
}
else
{
不存在
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
XmlElement person = doc.CreateElement("Person");
doc.AppendChild(person);
XmlElement student = doc.CreateElement("Student");
student.SetAttribute("studentID", "110");
person.AppendChild(student);
XmlElement name = doc.CreateElement("Name");
name.InnerXml = "张三三李思思";
student.AppendChild(name);
XmlElement age = doc.CreateElement("Age");
age.InnerXml = "28";
student.AppendChild(age);
XmlElement gender = doc.CreateElement("Gender");
gender.InnerXml = "男";
student.AppendChild(gender);
}
doc.Save("Student.xml");
Console.WriteLine("保存成功");
#endregion
#region 读取XML文档
XmlDocument doc = new XmlDocument();
doc.Load("OrDER.xml");
还是 先获得根节点
XmlElement order = doc.DocumentElement;
获得根节点下面的所有子节点
XmlNodeList xnl = order.ChildNodes;
foreach (XmlNode item in xnl)
{
Console.WriteLine(item.InnerText);
}
XmlElement items = order["Items"];
XmlNodeList xnl2 = items.ChildNodes;
foreach (XmlNode item in xnl2)
{
Console.WriteLine(item.Attributes["Name"].Value);
Console.WriteLine(item.Attributes["Count"].Value);
if (item.Attributes["Name"].Value == "手套")
{
item.Attributes["Count"].Value = "新来哒";
}
}
doc.Save("OrDER.xml");
#endregion
#region 使用XPath的方式来读取XML文件
XmlDocument doc = new XmlDocument();
doc.Load("order.xml");
获得根节点
XmlElement order = doc.DocumentElement;
XmlNode xn = order.SelectSingleNode("/Order/Items/OrderItem[@Name='雨衣']");
Console.WriteLine(xn.Attributes["Name"].Value);
xn.Attributes["Count"].Value = "woshi new";
doc.Save("order.xml");
Console.WriteLine("保存成功");
#endregion
XmlDocument doc = new XmlDocument();
doc.Load("order.xml");
doc.RemoveAll();不行 根节点不允许删除
XmlElement order = doc.DocumentElement;
order.RemoveAll();移除根节点下的所有子节点
XmlNode xn = order.SelectSingleNode("/Order/Items/OrderItem[@Name='雨衣']");
让orderItem去删除属性
XmlNode orderItem = order.SelectSingleNode("/Order/Items/OrderItem");
获得Items节点
XmlNode items = order["Items"];order.SelectSingleNode("/Order/Items");
items.RemoveChild(xn);移除当前节点
orderItem.RemoveAttributeNode(xn.Attributes["Count"]);
xn.Attributes.RemoveNamedItem("Count");
doc.Save("order.xml");
Console.WriteLine("删除成功");
Console.ReadKey();
文章出处:https://www.cnblogs.com/LyShark/p/13157862.html
本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!