C #을 노트 - [객체 지향]으로 (오) 윈도우 양식 및 이벤트 구동

(A)의 방법의 WinForm 개발 환경을 이용

1) 소프트웨어 배포 아키텍처

  • 애플리케이션의 B / S 구조 [웹 애플리케이션 (브라우저 브라우저 / 서버 서버)

그림 삽입 설명 여기

  • C / S 아키텍처 응용 프로그램 (윈도우,의 WinForm, 데스크톱 응용 프로그램) : 클라이언트 / 서버 (클라이언트 / 서버)

그림 삽입 설명 여기

2) Windows 응용 프로그램을 만듭니다

비주얼 Stuido 단계에서 Windows 응용 프로그램을 만듭니다 1 :
  • 비주얼 스튜디오를 열고;
  • 새로운 프로젝트;
  • 프로젝트 유형 : Visual C # 프로젝트;
  • 틀 : Windows 응용 프로그램;
2. .NET의 가장 높은 버전을 선택하지 않아도

가장 높은 버전을 설치해야합니다 최고의 미래 클라이언트를 사용하여 개발하는 경우;

[참고] 디렉토리 구조를 :
  • 일반적으로 응용 프로그램의 진입 점입니다 program.cs 파일을 가지고;
  • 참고 우리는 모듈의 일부를 사용, 네임 스페이스를 추가 할 참조를 추가;
  • 어셈블리의 속성의 AssemblyInfo.cs 정보입니다
  • Form.cs 및 Form.cs [디자인] 사이 바로 스위칭 F7 시프트 + F7이고;
    그림 삽입 설명 여기
3. 솔루션 탐색기

역할 : 전체 현저한 파일;
그림 삽입 설명 여기

[주] 대장의 역할 :
  1. 상속을 대표;
  2. 인터페이스를 구현;
부분 키워드 :

키워드 후 클래스와 결합 된 클래스 자체의 일부를 정의, 부서 클럽 유형에 통합;

공통 속성 :

그림 삽입 설명 여기

(B) 이벤트 구동기구

첫 번째 첫 번째 조사를 오류;

응용 프로그램 1) 이벤트

컴퓨터 이벤트 :
  • 마우스, 키보드를 눌러 눌러;
이벤트의 역할 :
  • 사용자의 요구가 없을 경우에 의해 처리 된 사용자 요청에 응답하는 윈도우 시스템 이벤트가 정지 대기 상태에있다;
이벤트는 다음과 같이 구성
  • 필요한, 그리고 마지막으로 "이벤트 자체"와 "프로세스"(배경 자동으로 동료) 연결되어있는 사전 (.NET 플랫폼)에서 이벤트를 설정하고 이벤트 핸들러 (개발자의 정의)를 추가;
  • 사용자 작업 이벤트 (예 : 버튼을 클릭하는 것과이, 아이콘 등을 두 번 클릭)하면, 자동으로 이벤트 핸들러 작업이 완료 될 때 호출;

2) 버튼의 속성

  • 버튼의 이름은 ID가, 즉,이 고유 실제로;
  • 이러한 클릭과 같은 이벤트를 추가,이 사건에서 찾을 수 있습니다, 다음, 이벤트의 프레임 워크에서 더블 클릭, 당신은 클릭 이벤트를 삭제하려면, 그것은 필요 FrmMain.cs [디자인]입니다, 버튼 컨트롤을 찾은 다음 속성, 실행 오류 [이 이벤트를 위임 수동으로 삭제하기] 발생했을 때, 재설정이 아니라, 사용자 코드에서 직접 삭제 이벤트, 클릭 오른쪽으로 재설정을 클릭합니다
    public partial class FrmMain : Form
    {
        public FrmMain()        //构造方法
        {
            InitializeComponent();
            
            // 将按钮的单击事件和事件响应方法结合【实际上是在另外的一个位置,这是放在这里便于观察】
            this.BTNTest.Click += new System.EventHandler(this.BTNTest_Click);
        }

        private void FrmMain_Load(object sender, EventArgs e)
        {

        }
        
        //事件的响应方法
        private void BTNTest_Click(object sender, EventArgs e)
        {
            MessageBox.Show("你好!");
        }
    }
두 개의 추가 방법 님의 질문에 답변

의 증가는, 이것이 당신이 분리 첫째 잘못하지 않는 경우, 시간을 설정 드롭 다운 상자에서 더 유용 두 가지 이벤트 분리 버튼 및 연결 이벤트입니다;


namespace WFDemo
{
    public partial class FrmMain : Form
    {
        public FrmMain()        //构造方法
        {
            InitializeComponent();
            // 将按钮的单击事件和事件响应方法结合
            this.BTNTest.Click += new System.EventHandler(this.BTNTest_Click);
        }

        private void FrmMain_Load(object sender, EventArgs e)
        {

        }
        //事件的响应方法
        private void BTNTest_Click(object sender, EventArgs e)
        {
            MessageBox.Show("你好!");
        }
		//事件断开按钮
        private void BtnSwitch_Click(object sender, EventArgs e)
        {
            this.BTNTest.Click -= new System.EventHandler(this.BTNTest_Click);
        }
		//事件关联按钮
        private void button1_Click(object sender, EventArgs e)
        {
            this.BTNTest.Click += new System.EventHandler(this.BTNTest_Click);
        }
    }
}

참고 :

송신자는 이벤트 소스 개체를 나타냅니다 만, 때, 원래의 유형으로 캐스트를 입력 할 사용을 필요로하는 초기 개체 클래스 때문에;

  • 여기에 이벤트에 대한 공공 응답의 예입니다 :
    그림 삽입 설명 여기
// 主要看最后一个BtnTeacher_Click方法
namespace WFDemo
{
    public partial class FrmMain : Form
    {
        public FrmMain()        //构造方法
        {
            InitializeComponent();
            // 将按钮的单击事件和事件响应方法结合
            this.BTNTest.Click += new System.EventHandler(this.BTNTest_Click);

            //给三个按钮单击事件添加同一个事件响应方法
            this.BtnAndy.Click += new System.EventHandler(this.BtnTeacher_Click);
            this.BtnCarry.Click += new System.EventHandler(this.BtnTeacher_Click);
            this.BtnCoco.Click += new System.EventHandler(this.BtnTeacher_Click);
        }

        private void FrmMain_Load(object sender, EventArgs e)
        {

        }
        //事件的响应方法
        private void BTNTest_Click(object sender, EventArgs e)
        {
            MessageBox.Show("你好!");
        }

        private void BtnSwitch_Click(object sender, EventArgs e)
        {
            this.BTNTest.Click -= new System.EventHandler(this.BTNTest_Click);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.BTNTest.Click += new System.EventHandler(this.BTNTest_Click);
        }

        private void button2_Click(object sender, EventArgs e)
        {

        }

        // 事件响应的公共方法(sender表示的是事件源对象)
        private void BtnTeacher_Click(object sender, EventArgs e)
        {
            string txt = ((Button)sender).Text;
            MessageBox.Show(txt + "您好!");
        }
    }
}

3) 이벤트는 대개 컨트롤을 사용

중요한 이벤트의 형태 :
  • 로드 : 폼로드 이벤트 (거의 사용하지 않음);
  • FormClosing : 양식 전에 이벤트가 닫혀;
  • FormClosed : 폼 이벤트가 발생 닫으면;
텍스트 상자 중요한 이벤트 :
  • 의 TextChanged : 텍스트 상자 변경 이벤트의 내용은;
  • 사용자 이벤트 키를 누를 그것이 일어 났을 때 해제 ;: 키를 누를 때
  • 하는 MouseLeave : 마우스가 텍스트 상자가 발생 떠날 때;
드롭 다운 중요한 사건의 상자 :
  • 의 SelectedIndexChanged : 변경 사항이 발생할 때 풀다운 항목을 사용자가 선택하면,

전체 사용 (C) 프롬프트 메시지

사용자 경험에 영향을 미치는, 종료 뉴스 팁을 사용하는 방법을 배우게합니다,하지만 당신은 때문에 수동의 필요성, 너무 많이 사용할 수 없습니다;
그림 삽입 설명 여기

데모 :

그림 삽입 설명 여기

// 这里只是写出事件的响应方法;并没有将单击事件与事件的响应方法相结合,这个工作是由虚拟机完成;
private void BtnTestMsg_Click(object sender, EventArgs e)
        {
            MessageBox.Show("请输入学员姓名!");
            MessageBox.Show("请输入学员姓名!", "验证提示");
            MessageBox.Show("请输入学员姓名!", "验证提示", MessageBoxButtons.OKCancel);
            MessageBox.Show("请输入学员姓名!", "验证提示",
                MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                
			// 用户分别选择取消或者确定时候分别执行怎样的结果
			DialogResult result = MessageBox.Show("请输入学员姓名!", "验证提示",
                MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            if(result == DialogResult.Cancel)
            {
                //用户取消操作
                MessageBox.Show("用户取消操作!");
            }
            else
            {
                //用户继续执行操作
                MessageBox.Show("用户继续操作!");
            }
        }
코드 분석 :

그림 삽입 설명 여기
그림 삽입 설명 여기

게시 34 개 원래 기사 · 원의 칭찬 0 · 조회수 994

추천

출처blog.csdn.net/forever_008/article/details/104093596