C\#채 팅 창 과 떨 림 실현

본 논문 의 사례 는 C\#채 팅 창 과 디 더 링 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
채 팅 창 사례
1.채 팅 창 에 대한 요구?
(1)두 텍스트 상자 그룹 과 두 단추 로 구성 되 어 있 습 니 다.(읽 기 전용 상자,입력 상자 와 취소 단추,보 내기 단추)
(2)읽 기 전용 상 자 는 읽 기 전용 이 고 초점 이 없 으 며 메 시 지 를 많이 보 내 면 자동 으로 아래로 스크롤 되 고 스크롤 바 가 있 습 니 다.
(3)입력 상자 에 초점 이 있어 메 시 지 를 입력 할 수 있 습 니 다.
(4)취소 단 추 는 단 추 를 누 르 면 입력 상자 의 내용 이 사라 집 니 다.
(5)보 내기 단 추 는 Enter 키 를 누 르 거나 눌 러 서 입력 상자 의 내용 을 보 내 는 것 이다.
2.C\#어떻게 실현
(1)창 을 가운데 로(2 가지 방법)
① CenterToScreen()을 사용 하 는 방법

this.CenterToScreen();//            
② 공식 사용
창 을 가운데 로 만 들 려 면 창 왼쪽 가장자리 와 용기 작업 구역 왼쪽 가장자리 사이 의 거리 와 컨트롤 상단 가장자리 와 용기 작업 구역 상단 가장자리 사이 의 거 리 를 계산 해 야 합 니 다.

this.Left = Screen.PrimaryScreen.WorkingArea.Width / 2 - this.Width/2;
//                   =          /2-     /2
this.Top = Screen.PrimaryScreen.WorkingArea.Height / 2 - this.Height/2;
//                   =          /2-     /21
(2)창 에 이름과 크기,배경 색 을 줍 니 다.

this.Text = "        .....";
this.Size = new Size(680, 500);
this.BackColor = Color.PowderBlue;
(3)읽 기 전용 상자 textbox 를 삽입 하고 크기 를 설정 하 며 읽 기 전용
그러면 크기 를 어떻게 설정 해 야 할 까요?너비 가 당 길 수 있 지만 높이 가 안 되 기 때문에 Multiline 이라는 속성 을 설정 해 야 높이 를 설정 할 수 있 습 니 다.그리고 읽 기만 하면 ReadOnly 라 는 속성 입 니 다.

textBox1.Multiline = true;//        
textBox1.Size = new Size(630, 250);
textBox1.ReadOnly = true;//            
(4)입력 상자 textbox 를 삽입 하고 크기 를 설정 합 니 다.

textBox2.Multiline = true;//  textbox2      
textBox2.Size = new Size(textBox1.Width, 100);
이때,우 리 는 마우스 의 초점 이 읽 기 전용 상자 로 달 려 가 는 것 을 발 견 했 습 니 다.따라서 이때 TabIndex 라 는 속성 을 사용 하여 마우스 의 기본 초점 을 입력 상자 에 주어 야 합 니 다.그 값 은 0 이면 열 립 니 다.

textBox2.TabIndex = 0;//  textbox2     
(5)두 개의 단 추 를 삽입 합 니 다.하 나 는 취소 라 고 하고 하 나 는 발송 이 라 고 합 니 다.그리고 그들의 크기 는 똑 같 습 니 다.배경 색 과 글꼴 색 도 똑 같 습 니 다.

//buttom1   
button1.Size = new Size(60, 30);//  button1   60    30  
button1.Text = "  ";//  button1     
button1.ForeColor = Color.White;//      
button1.BackColor = Color.MediumSeaGren;//      

//button2   
button2.Size = new Size(button1.Width, button1.Height);//  button2     button1  
button2.Text = "  ";
button2.ForeColor = Color.White;
button2.BackColor = Color.MediumSeaGreen;
(6)보 내 기 를 누 르 면 입력 상자 의 내용 을 읽 기 전용 상자 에 보 내 고 입력 상자 의 내용 이 사라 집 니 다.이때 마우스 의 초점 은 입력 상자 에 있 지만 빈 칸 을 누 르 면 보 내 거나 직접 보 내 면 보 낼 수 없고 마우스 의 초점 이 남아 있 으 며 입력 상자 의 맨 왼쪽 에 있 습 니 다.
① 여기 서 우 리 는 if 로 빈 문자 나 빈 칸 인지 판단 해 야 한다.만약 에 보 내지 않 으 면 보 내 고 보 내 려 면 보 내기 버튼 에서 해 야 한다.
string.IsNullOrWhiteSpace 는 지정 한 문자열 이 null 인지,비어 있 는 지,공백 문자 로 만 구성 되 어 있 는 지 표시 합 니 다.
Focus()는 입력 후의 초점 을 가 져 오 는 것 을 표시 합 니 다.
전송 기능 을 실현 하 는 것 은 입력 상자 의 내용 을 읽 기 전용 상자 에 할당 하 는 것 입 니 다.
그리고 보 낸 후 입력 상자 의 내용 이 사라 지면 빈 문자열 로 대체 할 수 있 습 니 다.

if (string.IsNullOrWhiteSpace(textBox2.Text))//  textbox2              
        {

​            textBox2.Focus();//      
​            textBox2.Text = "";//        textbox2      
​        }
​        else
​        {
​            textBox1.Text+= "      2024415986" + DateTime.Now + "\r
" + "\r
" + textBox2.Text + "\r
" + "\r
"; ​ textBox2.Text = "";// textbox1 textbox2 ​ } //+ ,"\r
"
(7)이때 우 리 는 읽 기 상자 의 내용 이 범 위 를 넘 으 면 더 이상 표시 되 지 않 는 다 는 문 제 를 발견 했다.
그렇다면 이 문 제 를 어떻게 해결 해 야 할 까?여기 서 우 리 는 하나의 속성 과 방법 을 도입 할 수 있다.
① Selection Start 는 텍스트 범 위 를 가 져 오 는 시작 점 이나 Select 를 표시 하여 텍스트 범 위 를 가 져 옵 니 다.
② ScrollToCaret()는 컨트롤 내용 을 현재 기호 삽입 위치 로 스크롤 합 니 다.
이 두 줄 의 코드 를 통 해 이 문 제 를 해결 할 수 있 으 니,반드시 읽 기 전용 상자 에 써 야 한다.

textBox1.SelectionStart = textBox1.TextLength;//  textbox1          
textBox1.ScrollToCaret();//              
(8)발송 을 누 르 면 입력 상자 의 내용 을 취소 합 니 다.
이것 은 빈 문자열 로 대체 할 수 있 지만 취소 단추 의 이벤트 에 써 야 합 니 다.

//        
        private void button1_Click(object sender, EventArgs e)
        {
            textBox2.Text = "";
 }
(9)Enter 키 를 눌 러 내용 보 내기
AcceptButton 이라는 속성 을 사용 하 는 방법 이 있 습 니 다.하지만 이 속성 은 창 에서 만 찾 을 수 있 습 니 다.
AcceptButton 은 현재 사용자 가 Enter 키 를 눌 렀 을 때 누 른 창의 단 추 를 가 져 오 거나 설정 합 니 다.

this.AcceptButton = this.button2;//  Enter   button2    
둘째,창문 떨 림
1.창문 떨 림 의 원리
실질 적 으로 창문 위치의 변화 와 빠 른 이동 이다.
첫 번 째 단계:
모니터 에 창 을 가운데 로 놓 고 창의 텍스트 를 설정 합 니 다.

this.CenterToScreen();//            
this.Text = "   ";
두 번 째 단계:
단 추 를 삽입 하고 단추 의 크기 와 텍스트 내용 을 설정 합 니 다.

this.button1.Size = new Size(80, 40);
     button1.Text = "   ";
세 번 째 단계:
창의 위 치 를 설정 하 는 것 입 니 다.그러면 그 위치의 변 화 는 창 이 가운데 에 있 는 위치 왼쪽 상단 의 위치 부터 시계 방향 으로 이동 하 는 것 입 니 다.
그렇다면 그것 이 바 꾸 는 규칙 은 무엇 입 니까?
먼저 초 반 의 위치 에서(바로 극 중 왼쪽 상단 의 위치 가 오른쪽으로 이동 하 는 것 이다='다시 아래로='왼쪽으로='왼쪽으로='위로='위로='오른쪽으로='오른쪽으로='아래로='왼쪽으로='왼쪽으로.마지막 으로 초기 위치 로 돌아 가기
location 속성 을 사용 해 야 합 니 다.
하지만 이동 할 때마다 몇 밀리초 간 머 물 게 해 야 하기 때문에 스 레 드 라 는 개념 을 사용 해 야 한다.
그럼 스 레 드 가 뭐 예요?
Thread 스 레 드 는 운영 체제 가 연산 스케줄 을 할 수 있 는 가장 작은 단위 로 프로 세 스 에 포함 되 어 있 으 며 스케줄 의 실제 운영 단위 입 니 다.
Thread.Sleep(); 현재 스 레 드 가 지정 한 밀리초 수 를 걸 었 음 을 표시 합 니 다.

Thread.Sleep(20);//    20  
그러나 위 치 를 한 바퀴 바 꾼 후 초기 위치 로 돌아 가 는 것 은 떨 림 이 아니 므 로 for 순환 을 사용 하여 여러 번 이동 시 켜 떨 림 효 과 를 실현 해 야 합 니 다.
원본 코드 는 다음 과 같 습 니 다.

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     
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

​    private void Form1_Load(object sender, EventArgs e)
​    {
​        this.CenterToScreen();//            
​        this.Text = "   ";
​        this.button1.Size = new Size(80, 40);
​        button1.Text = "   ";
​        this.AcceptButton = this.button1;

​    }

​    private void Form1_douyidou(object sender, EventArgs e)
​    {
​        
​        for (int i = 0; i < 2; i++)
​        {
​            //①  
​            this.Location = new Point(this.Left + 10, this.Top);
​            Thread.Sleep(20);//    20  
​            //②  
​            this.Location = new Point(this.Left, this.Top + 10);
​            Thread.Sleep(20);
​            //③  
​            this.Location = new Point(this.Left - 10, this.Top);
​            Thread.Sleep(20);
​            //④  
​            this.Location = new Point(this.Left - 10, this.Top);
​            Thread.Sleep(20);
​            //⑤  
​            this.Location = new Point(this.Left, this.Top - 10);
​            Thread.Sleep(20);
​            //⑥  
​            this.Location = new Point(this.Left, this.Top - 10);
​            Thread.Sleep(20);
​            //⑦  
​            this.Location = new Point(this.Left + 10, this.Top);
​            Thread.Sleep(20);
​            //⑧  
​            this.Location = new Point(this.Left + 10, this.Top);
​            Thread.Sleep(20);
​            //⑨  
​            this.Location = new Point(this.Left, this.Top + 10);
​            Thread.Sleep(20);
​            //    
​            this.Location = new Point(this.Left - 10, this.Top);
​            Thread.Sleep(20);
​        }

​    }
}

}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기