C#实现简化QQ聊天窗口
作者:小白你咋让人拴住了 发布时间:2023-01-18 19:01:20
标签:C#,QQ,聊天窗口
本文实例为大家分享了C#实现简化QQ聊天窗口的具体代码,供大家参考,具体内容如下
如图样式,详细步骤如下
整个窗体设置
private void Form1_Load(object sender, EventArgs e)
{
this.BackColor = Color.Chocolate;//设置窗体背景颜色
this.Text = "与张某正在聊天...";//设置窗体文本内容
this.Size = new Size(450,400);//设置窗体大小
//设置窗体在工作区居中显示
this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width/2-this.Width/2,Screen.PrimaryScreen.WorkingArea.Height/2-this.Height/2) ;
}
添加两个textbox分别为聊天内容与输入框;
添加两个button分别为抖一抖与发送;
抖动事件
private void button1_Click(object sender, EventArgs e)
{ //抖动事件
int x = this.Left;
int y = this.Top;
for (int n = 0; n < 3; n++)
{ //添加using System.Threading;
this.Location = new Point(x - 3, y);
Thread.Sleep(20);//挂起20毫秒
this.Location = new Point(x - 3, y - 3);
Thread.Sleep(20);
this.Location = new Point(x, y - 3);
Thread.Sleep(20);
this.Location = new Point(x + 3, y - 3);
Thread.Sleep(20);
this.Location = new Point(x + 3, y + 3);
Thread.Sleep(20);
this.Location = new Point(x, y + 3);
Thread.Sleep(20);
this.Location = new Point(x - 3, y + 3);
Thread.Sleep(20);
this.Location = new Point(x - 3, y);
Thread.Sleep(20);
this.Location = new Point(x, y);
}
}
发送事件
private void button2_Click(object sender, EventArgs e)
{ //发送时间
if (textBox2.Text!="")//当输入栏不为空内容时
{ //textbox1内容等于textbox1原本内容(聊天记录)+现在的时间+发话人+textbox2的输入内容
textBox1.Text = textBox1.Text + DateTime.Now + "\r\n" + "李某:"+textBox2.Text+"\r\n";
textBox2.Text= "";//清空输出框
}
}
添加滚动条
private void textBox1_TextChanged(object sender, EventArgs e)
{
//在textbox1属性设置scrollbars滚动条显示
//滚轮显示最后一行
this.textBox1.SelectionStart = this.textBox1.Text.Length;
this.textBox1.ScrollToCaret();
//设置lcon类型图标
}
添加键盘事件
(Enter实现发送功能)
private void textBox2_KeyDown(object sender, KeyEventArgs e)
{ //在输入框内添加键盘事件,Enter实现发送功能
if (e.KeyCode == Keys.Enter)
{
button2_Click(sender, e);
}
}
来源:https://blog.csdn.net/weixin_44024993/article/details/105443352


猜你喜欢
- 知识点回顾封装封装(有时称为数据隐藏)是与对象有关的一个重要概念。从形式上来看,封装不过是将数据和行为组合在一个包中,并对对象的使用者隐藏了
- BufferedReader读取文件指定字符集问题默认的读取方式BufferedReader bufferedReader = new Bu
- 1、定义方法的格式 访问修饰符 返回类型 方法名 (参数列表) { // 方法的主体… }2、静态方法在大多数时候,我们定义写一个方法,会把
- 删除字符串的所有标点str = str.replaceAll("[\\pP‘'“”]", ""
- 一,在一个公共类里创建一个公共方法,然后需要验证的页面都调用这个方法 //在此例子中,就是在入口函数里调用CheckLogin()
- 该项目主要实现mybatisplus、多数据源、lombok、druid的集成主要参考 https://mp.baomidou.com/gu
- 废话不多说了,直接给大家贴代码了,具体代码如下所示:public class RoundImageView extends ImageVie
- 1 编程语言简介编程语言(programming language)可以简单的理解为一种计算机和人都能识别的语言。一种计算机语言让程序员能够
- 前言记得前段时间的文章么?redis使用位图法记录在线用户的状态,还是需要自己实现一个IM在线用户状态的记录,今天来讲讲另一方案,布隆过滤器
- Android 自定义组件成JAR包的实现方法,这里对自己实现的Android View 组件进行JAR 包的处理。
- 答案是能!松哥之前写过类似的文章,但是主要是讲了用法,今天我们来看看原理!本文基于当前 Spring Security 5.3.4 来分析,
- 关于Unity的换装,网上有几篇文章,我之前也简单的描述过实现。不过那个时候只是粗略的试验了下。今天好好梳理了下代码。先上代码(自己的游戏项
- 一、为什么需要服务网关:1、什么是服务网关:
- 工具方法:本文的目的是把json串转成map键值对存储,而且只存储叶节点的数据maven 引用jar包版本:<dependency&g
- 在C程序代码中我们可以利用操作系统提供的互斥锁来实现同步块的互斥访问及线程的阻塞及唤醒等工作。然而在Java中除了提供LockAPI外还在语
- 1. 问题所示编译ssm的项目的时候出现了这个错误导致一直运行不起来SLF4J: Failed to load class "or
- Java去掉指定字符串的开头的指定字符/** * 去掉指定字符串的开头的指定字符 *
- 首先理解数据绑定为什么要使用数据绑定基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单:但我们提交后,为了将请求信
- 很多小伙伴都有修改Eclipse启动画面或图标的需求,寻找自己的个性化嘛,今天我就给大家说一下如何修改。一、 启动画面自定义第一种情况:.纯
- 首先我们来回忆一下上一节讲过的synchronized关键字,该关键字用于给代码段或方法加锁,使得某一时刻它修饰的方法或代码段只能被一个线程