2017-5-5 QQ面板 (用户控件、timer控件,轮询实现聊天功能)

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 用户控件练习___QQ面板.App_code;

namespace 用户控件练习___QQ面板
{
    public partial class Form1 : Form
    {
        public Form1(Form2 f2,qquser u)
        {
            InitializeComponent();
            //绑定当前登录用户的信息
            pictureBox1.BackgroundImage = Image.FromFile(u.Qqpic);
            label1.Text = u.Qqname;
            label2.Text = u.Qqsign;
            //绑定好友信息
          qqfriend fri= new qqfrienddata().selectfriend(u.Qqnumber);
            if(fri!=null)
            {
              string[] strs = fri.Qqfriends.Split(‘,‘);
                foreach(string s in strs)
                {
                    qquser u1 = new qquserdata().selectuser(s);
                    if(u1!=null)
                    {
                        friend f = new friend(u,u1);
                        f.pic1.BackgroundImage = Image.FromFile(u1.Qqpic);
                        f.la1.Text = u1.Qqname;
                        f.la2.Text = u1.Qqsign;
                        flowLayoutPanel1.Controls.Add(f);
                    }
                }
            }
            label3.Text = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss");

        }

        //private void button1_Click(object sender, EventArgs e)
        //{
        //    friend f = new friend();
        //    f.pic1.BackgroundImage = Image.FromFile("img/1.jpg.jpg");
        //    f.la1.Text = "姚慧旭";
        //    f.la2.Text = "套路得人心";
        //    flowLayoutPanel1.Controls.Add(f);
        //}

        private void timer1_Tick(object sender, EventArgs e)
        {
            label3.Text = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss");
        }

        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.Tasks;
using System.Windows.Forms;
using 用户控件练习___QQ面板.App_code;

namespace 用户控件练习___QQ面板
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            qquser u=new qquserdata().selectuser(textBox1.Text.Trim(),textBox2.Text);
            if(u==null)
            {
                label1.Text = "账号或密码错误!";
                return;
            }
            if (u.Qqstate)
            {
                Form1 f1 = new Form1(this,u);
                f1.Show();
                this.Hide();

            }
            else
            {
                label1.Text = "账号未激活!";
            }
        }
    }
}

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 用户控件练习___QQ面板.App_code;

namespace 用户控件练习___QQ面板
{
    public partial class Form3 : Form
    {
        qquser ME = null;
        qquser TO = null;
        friend F = null;
        public Form3(qquser me,qquser to,friend f)
        {
            InitializeComponent();
            this.Text = me.Qqname + "与" + to.Qqname + "的对话";
            ME = me;
            TO = to;
            F = f;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            qqchat cht = new qqchat();
            cht.From = ME.Qqnumber;
            cht.To = TO.Qqnumber;
            cht.Content = richTextBox2.Text;
            cht.Time = DateTime.Now;
            cht.State = false;

            new qqchatdata().insertchat(cht);
            richTextBox1.Text+=ME.Qqname+"对"+TO.Qqname+"说:("+cht.Time.ToString("HH:mm:ss")+")\r"+richTextBox2.Text+"\r";
            richTextBox2.Text = "";
        }

        private void timer1_Tick(object sender, EventArgs e)
        {

          qqchat cht= new qqchatdata().select(TO.Qqnumber, ME.Qqnumber);
            if(cht!=null)
            {
                richTextBox1.Text += cht.From + "对" + cht.To + "说:(" + cht.Time.ToString("HH:mm:ss") + ")\r"+cht.Content+"\r";

                new qqchatdata().updatestate(cht.Ids);
            }

        }

        private void Form3_FormClosing(object sender, FormClosingEventArgs e)
        {
            F.ff3 = null;
        }
    }
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using 用户控件练习___QQ面板.App_code;

namespace 用户控件练习___QQ面板
{
    public partial class friend : UserControl
    {
        qquser ME = null;
        qquser TO = null;
        public friend(qquser me,qquser to)
        {
            InitializeComponent();
            ME = me;
            TO = to;
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void friend_MouseEnter(object sender, EventArgs e)
        {
            this.BackColor = Color.Red;

        }

        private void friend_MouseLeave(object sender, EventArgs e)
        {
            this.BackColor = Color.Transparent;
        }

      public Form3 ff3 = null;
        private void friend_DoubleClick(object sender, EventArgs e)
        {
            if (ff3 == null)
            {
                Form3 f3 = new Form3(ME, TO,this);
                f3.Show();
                ff3 = f3;
            }
            else
            {
                ff3.WindowState = FormWindowState.Normal;
                ff3.Focus();
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (new qqchatdata().select(TO.Qqnumber, ME.Qqnumber) != null)
            {
                timer2.Enabled = true;
            }
            else
            {
                timer2.Enabled = false;
            }
        }
        bool top = false;
        private void timer2_Tick(object sender, EventArgs e)
        {
            if (top)
            {
                this.pic1.Location = new Point(9, 13);
                top = false;
            }
            else
            {
                this.pic1.Location = new Point(15, 19);
                top = true;
            }
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 用户控件练习___QQ面板.App_code
{
    public class qqchat
    {
        private int _ids;

        public int Ids
        {
            get { return _ids; }
            set { _ids = value; }
        }
        private string _from;

        public string From
        {
            get { return _from; }
            set { _from = value; }
        }
        private string _to;

        public string To
        {
            get { return _to; }
            set { _to = value; }
        }
        private string _content;

        public string Content
        {
            get { return _content; }
            set { _content = value; }
        }
        private DateTime _time;

        public DateTime Time
        {
            get { return _time; }
            set { _time = value; }
        }
        private bool _state;

        public bool State
        {
            get { return _state; }
            set { _state = value; }
        }

    }
}
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 用户控件练习___QQ面板.App_code
{
     public class qqchatdata
    {
         SqlConnection conn=null;
         SqlCommand cmd=null;
         public qqchatdata()
         {
             conn = new SqlConnection("server=.;database=master;user=sa;pwd=123");
             cmd = conn.CreateCommand();
         }
         public void insertchat(qqchat ct)
         {
             cmd.CommandText = "insert into qqchat values (@a,@b,@c,@d,@e)";
             cmd.Parameters.Clear();
             cmd.Parameters.AddWithValue("@a",ct.From);
             cmd.Parameters.AddWithValue("@b",ct.To);
             cmd.Parameters.AddWithValue("@c",ct.Content);
             cmd.Parameters.AddWithValue("@d",ct.Time);
             cmd.Parameters.AddWithValue("@e",ct.State);

             conn.Open();
             cmd.ExecuteNonQuery();
             conn.Close();
         }

         public qqchat select(string from,string to)
         {
             qqchat ct = null;
             cmd.CommandText = "select * from qqchat where [from][email protected] and [to][email protected] and [state]=0";
             cmd.Parameters.Clear();
             cmd.Parameters.AddWithValue("@a",from);
             cmd.Parameters.AddWithValue("@b",to);
             conn.Open();
             SqlDataReader dr= cmd.ExecuteReader();
             if(dr.HasRows)
             {
                 ct = new qqchat();
                 dr.Read();
                 ct.Ids = Convert.ToInt32(dr[0]);
                 ct.From = dr[1].ToString();
                 ct.To = dr[2].ToString();
                 ct.Content=dr[3].ToString();
                 ct.Time = Convert.ToDateTime(dr[4]);
                 ct.State = Convert.ToBoolean(dr[5]);
             }
             conn.Close();
             return ct;
         }

         public void updatestate(int ids)
         {
             cmd.CommandText = "update qqchat set state=1 where [email protected]";
             cmd.Parameters.Clear();
             cmd.Parameters.AddWithValue("@a",ids);
             conn.Open();
             cmd.ExecuteNonQuery();
             conn.Close();
         }

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 用户控件练习___QQ面板.App_code
{
   public class qqfriend
    {
        private string _qqnumber;

        public string Qqnumber
        {
            get { return _qqnumber; }
            set { _qqnumber = value; }
        }
        private string _qqfriends;

        public string Qqfriends
        {
            get { return _qqfriends; }
            set { _qqfriends = value; }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 用户控件练习___QQ面板.App_code
{
     public class qqfrienddata
    {
         SqlConnection conn=null;
         SqlCommand cmd=null;

         public qqfrienddata()
         {
             conn = new SqlConnection("server=.;database=master;user=sa;pwd=123");
             cmd = conn.CreateCommand();
         }
         public qqfriend selectfriend(string number)
         {
             qqfriend f = null;
             cmd.CommandText = "select * from qqfriends where [email protected] ";
             cmd.Parameters.Clear();
             cmd.Parameters.AddWithValue("@a",number);
             conn.Open();
             SqlDataReader dr = cmd.ExecuteReader();
             if(dr.HasRows)
             {
                 f = new qqfriend();
                 dr.Read();
                 f.Qqnumber = dr[1].ToString();
                 f.Qqfriends = dr[2].ToString();
             }

             conn.Close();
             return f;

         }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 用户控件练习___QQ面板.App_code
{
    public class qquser
    {
        private string _qqnumber;

        public string Qqnumber
        {
            get { return _qqnumber; }
            set { _qqnumber = value; }
        }
        private string _qqpwd;

        public string Qqpwd
        {
            get { return _qqpwd; }
            set { _qqpwd = value; }
        }
        private string _qqname;

        public string Qqname
        {
            get { return _qqname; }
            set { _qqname = value; }
        }
        private string _qqsign;

        public string Qqsign
        {
            get { return _qqsign; }
            set { _qqsign = value; }
        }
        private string _qqpic;

        public string Qqpic
        {
            get { return _qqpic; }
            set { _qqpic = value; }
        }
        private bool _qqstate;

        public bool Qqstate
        {
            get { return _qqstate; }
            set { _qqstate = value; }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 用户控件练习___QQ面板.App_code
{
    public class qquserdata
    {
        SqlConnection conn = null;
        SqlCommand cmd = null;

        public qquserdata()
        {
            conn = new SqlConnection("server=.;database=master;user=sa;pwd=123");
            cmd = conn.CreateCommand();
        }
        public qquser selectuser(string number,string pwd)
        {
            qquser u = null;
            cmd.CommandText = "select * from qquser where [email protected] and [email protected]";
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@a",number);
            cmd.Parameters.AddWithValue("@b",pwd);
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            if(dr.HasRows)
            {
                u = new qquser();
                dr.Read();
                u.Qqnumber = dr[1].ToString();
                u.Qqpwd = dr[2].ToString();
                u.Qqname = dr[3].ToString();
                u.Qqsign = dr[4].ToString();
                u.Qqpic = dr[5].ToString();
                u.Qqstate = Convert.ToBoolean(dr[6]);
            }
            conn.Close();

            return u;
        }

        public qquser selectuser(string number)
        {
            qquser u = null;
            cmd.CommandText = "select * from qquser where [email protected] ";
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@a", number);

            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                u = new qquser();
                dr.Read();
                u.Qqnumber = dr[1].ToString();
                u.Qqpwd = dr[2].ToString();
                u.Qqname = dr[3].ToString();
                u.Qqsign = dr[4].ToString();
                u.Qqpic = dr[5].ToString();
                u.Qqstate = Convert.ToBoolean(dr[6]);
            }
            conn.Close();

            return u;
        }
    }
}
时间: 2024-11-14 12:34:48

2017-5-5 QQ面板 (用户控件、timer控件,轮询实现聊天功能)的相关文章

winform用户控件、动态创建添加控件、timer控件、控件联动

用户控件:(1) 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗体中添加, 将其实例化,然后添加到想要添加的容器的Control集合中. 动态创建添加控件: 配合上面的用户控件,实现类似QQ界面的打开自动加载好友昵称和签名 public Form1() { InitializeComponent(); //将当前登陆的账号的全部好友信息取出来 List<A

WinForm用户控件、动态创建添加控件、timer控件--2016年12月12日

好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3 0 0 用户控件: 通过布局将多个控件整合为一个控件,根据自己的需要进行修改,可对用户控件内的所有控件及控件属性进行修改使用 动态创建添加控件: 1 //定义控件类型 2 Button btn = new Button(); 3 //控件名称……等属性,也可以直接绑定各种事件 4 btn.Name = "mybutton" + i.ToString(); 5 //添加到窗体 this 可以替换为 容器控件 6 this.Co

10天学通Android开发(4)-用户布局与常用控件

常用布局 FrameLayout:子元素没有相对位置概念,都相对于左上角 LinearLayout:线性布局,一个接一个,水平或垂直 RelativeLayout:相对布局,可相对其它子元素 TableLayout:水平和垂直LinearLayout的混和 如: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andr

winform用户控件、timer控件、三级联动

用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似. 如果要在后台往窗体中添加,将其实例化,然后添加到想要添加的容器的Control集合中. timer控件: 组件中的最后一个控件,功能是可以根据用户自定义的时间间隔来触发时间,不会印象窗体本身的其他事件进行. 属性: Enable  设置控件是否启用 Interval  设置事件的频率,以毫秒为单位 事件只有一个:

WinForm timer控件

timer 控件:按用户定义的时间间隔引发的事件 属性: Enabled   是否启用:  Interval    事件发生的事件间隔,单位是毫秒 事件只有一个:Tick    事件经过指定的时间间隔发生 打开一个窗口,获取同步时间(精确到秒) 首先在构造函数中设置初始状态 public Form1() { InitializeComponent(); label3.Text = DateTime.Now.ToString("yyyy年MM月dd日hh时mm分ss秒"); 其次设置在T

ASP.NET AJAX入门系列(11):在多个UpdatePanle中使用Timer控件

本文将使用Timer控件更新两个UpdatePanel控件,Timer控件将放在UpdatePanel控件的外面,并将它配置为UpdatePanel的触发器,翻译自官方文档. 主要内容 在多个UpdatePanel中使用Timer控件 1.添加一个新页面并切换到设计视图. 2.如果页面没有包含ScriptManager控件,在工具箱中的AJAX Extensions标签下双击ScriptManager控件添加到页面中. 3.双击Timer控件添加到Web页面中.Timer控件可以作为Update

C# Winform学习---MDI窗体的设计,PictureBox控件(图片上一页下一页),Timer控件,MenuStrip控件

一.MDI窗体的设计 1.MDI简介 MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下的Microsoft Excel电子表格程序开始引入的,Excel电子表格用户有时需要同时操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于是就产生了MDI程序 2.效果图: 如下图所示,多窗体嵌套,其中一个是父窗体,其条是子窗体. 横向排列下面的窗体: 纵向排列下面的窗体: 关闭全部子窗

扩展GridView控件——为内容项添加拖放及分组功能

引言 相信大家对GridView都不陌生,是非常有用的控件,用于平铺有序的显示多个内容项.打开任何WinRT应用或者是微软合作商的网站,都会在APP中发现GridView的使用."Tiles"提供了一个简单易用,平铺方式来组织内容显示.Windows8的开始菜单是最典型的GridView 示例."开始菜单"显示了系统中安装的所有应用程序,而且支持重新排列. 本文源于我们项目的开发人员,他们想在项目中提供与GridView相同的用户体验,想要创建类GridView控件

[摘]ASP.Net标准控件(TextBox控件)

TextBox控件 TextBox控件又称文本框控件,为用户提供输入文本的功能. 1.属性 TextBox控件的常用属性及说明如表1所示. 表1 TextBox控件常用属性及说明 属    性 说    明 AutoPostBack 获取或设置一个值,该值指示无论何时用户在TextBox控件中按〈Enter〉键或〈Tab〉键时,是否自动回发到服务器的操作 CausesValidation 获取或设置一个值,该值指示当TextBox控件设置为在回发发生时进行验证,是否执行验证 ID 控件ID Te