Win Form 의 Splitter 는 소감 과 기 교 를 사용 합 니 다.

오늘 html 코드 를 분석 한 다음 에 대량으로 다운로드 하 는 프로그램 을 만 듭 니 다. Splitter (스 트 립),컴 파일 러 후 스 트 립 이 작 동 하지 않 고 스 트 립 을 드래그 할 때 인접 한 두 개 를 발견 합 니 다. Panel 크기 가 바 뀌 지 않 았 습 니 다.이것 때문에 거의 하루 가 걸 렸 지만 원인 을 찾 지 못 했다.다른 기계 에 테스트 하 는 것 도 포함 되 어 있 습 니 다.나중에 완전히 독립 된 테스트 항목 을 다시 만 들 었 는데 Splitter 사용 bug 하면,만약,만약... Panel ,그리고 하나 더. Splitter 。(이때 의 순 서 를 주의 하 라)내 위 에 문제 가 생 길 것 이다.이때 코드 에 있 는... InitializeComponent 함수 부분 코드 는 다음 과 같 습 니 다.

private void InitializeComponent() 

// 
// ...   
// 
this.panel1 = new System.Windows.Forms.Panel(); 
this.panel2 = new System.Windows.Forms.Panel(); 
this.splitter1 = new System.Windows.Forms.Splitter(); 
this.panel2.SuspendLayout(); 
this.SuspendLayout(); 
// 
// ...   
// 
//  
// panel1 
//  
this.panel1.Dock = System.Windows.Forms.DockStyle.Left; 
this.panel1.Location = new System.Drawing.Point(0, 42); 
this.panel1.Name = "panel1"; 
this.panel1.Size = new System.Drawing.Size(120, 209); 
this.panel1.TabIndex = 6; 
this.panel1.Resize += new System.EventHandler(this.panel2_Resize); 
this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel2_Paint); 
//  
// panel2 
//  
this.panel2.Controls.Add(this.splitter1); 
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; 
this.panel2.Location = new System.Drawing.Point(120, 42); 
this.panel2.Name = "panel2"; 
this.panel2.Size = new System.Drawing.Size(328, 209); 
this.panel2.TabIndex = 7; 
this.panel2.Resize += new System.EventHandler(this.panel2_Resize); 
this.panel2.Paint += new System.Windows.Forms.PaintEventHandler(this.panel2_Paint); 
//  
// splitter1 
//  
this.splitter1.BackColor = System.Drawing.SystemColors.Desktop; 
this.splitter1.Location = new System.Drawing.Point(0, 0); 
this.splitter1.Name = "splitter1"; 
this.splitter1.Size = new System.Drawing.Size(3, 209); 
this.splitter1.TabIndex = 0; 
this.splitter1.TabStop = false; 
//  
// Form1 
//  
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); 
this.ClientSize = new System.Drawing.Size(448, 273); 
this.Controls.Add(this.panel2); 
this.Controls.Add(this.panel1); 
this.Controls.Add(this.toolBar1); 
this.Controls.Add(this.statusBar1); 
this.Name = "Form1"; 
this.Text = "  2003 9 21 "; 
this.panel2.ResumeLayout(false); 
this.ResumeLayout(false); 

주의:이때 코드 의 순서 입 니 다.이때 프로그램의 집행 에 문제 가 있다.분리 조 는 작용 하지 않 을 것 이다.하지만 이 세 개의 컨트롤 을 순서대로 넣 고 다음 순서 로 바 꾸 면 문제 가 없다.1、하나 넣 기 Panel 패 널 1 그리고 설치 해 주세요. Dock 속성:Left;  2、하나 넣 기 Splitter splitter 1 실행 효 과 를 볼 수 있 도록 배경 색 을 특수 한 색 으로 설정 합 니 다.3、하나 넣 기 Panel 패 널 2 그리고 설치 해 주세요. Dock 속성:Fill;  4.실행 프로그램 을 컴 파일 할 때 문제 가 없습니다.이때 정확 한 코드 는:( InitializeComponent 함수 부분  

private void InitializeComponent() 

// 
// ...   
// 
this.panel1 = new System.Windows.Forms.Panel(); 
this.panel2 = new System.Windows.Forms.Panel(); 
this.splitter1 = new System.Windows.Forms.Splitter(); 
this.panel2.SuspendLayout(); 
this.SuspendLayout(); 
// 
// ...   
// 
//  
// panel1 
//  
this.panel1.Dock = System.Windows.Forms.DockStyle.Left; 
this.panel1.Location = new System.Drawing.Point(0, 42); 
this.panel1.Name = "panel1"; 
this.panel1.Size = new System.Drawing.Size(200, 209); 
this.panel1.TabIndex = 6; 
//  
// panel2 
//  
this.panel2.Controls.Add(this.splitter1); 
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; 
this.panel2.Location = new System.Drawing.Point(200, 42); 
this.panel2.Name = "panel2"; 
this.panel2.Size = new System.Drawing.Size(248, 209); 
this.panel2.TabIndex = 7; 
//  
// splitter1 
//  
this.splitter1.BackColor = System.Drawing.SystemColors.Desktop; 
this.splitter1.Location = new System.Drawing.Point(0, 0); 
this.splitter1.Name = "splitter1"; 
this.splitter1.Size = new System.Drawing.Size(3, 209); 
this.splitter1.TabIndex = 0; 
this.splitter1.TabStop = false; 
//  
// Form1 
//  
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); 
this.ClientSize = new System.Drawing.Size(448, 273); 
this.Controls.Add(this.panel2); 
this.Controls.Add(this.panel1); 
this.Controls.Add(this.toolBar1); 
this.Controls.Add(this.statusBar1); 
this.Menu = this.mainMenu1; 
this.Name = "Form1"; 
this.Text = "  2003 9 21 "; 
this.Load += new System.EventHandler(this.Form1_Load); 
this.panel2.ResumeLayout(false); 
this.ResumeLayout(false); 

좋은 웹페이지 즐겨찾기