2016-08-01 3 views
1

제목에 설명 된대로, 앞면에 Datagridview가있는 양식이 있습니다. datagridview는 내 양식보다 작으며, Datagridview를 제외한 다른 곳을 클릭 할 때마다 Datagridview가 사라지 길 원합니다.백그라운드에서 양식을 클릭하면 Datagridview가 사라집니다.

내 코드는 다음과 같습니다

this.dataGridView1.Leave += new System.EventHandler(this.focus); 

을하고 이벤트 핸들러는 다음과 같이 정의된다 :

private void focus(object sender, EventArgs e) 
{ 
    if(dataGridView1.Focused == false) 
    { 
     dataGridView1.Visible = false; 
    } 
} 

내 문제는 내 양식의 새로운 이벤트가 활성화 될 때 내 DataGridView에 만 사라하지만, 내 양식의 텍스트 상자에서 예를 들어 클릭하지 마십시오.

아무도 도와 줄 수 있습니까?

+0

DataGrid가 포커스를 잃었을 때 보이지 않게하려면? 또는 귀하의 질문은 무엇입니까? – GuidoG

+0

@GuidoG 12 예 정확히 – MaChaToc

답변

3

Leave 이벤트가 인상되지 않습니다 텍스트 상자에 초점을 맞추고, 또는 ToolStripButton 때 나를 위해 일한

this.dataGridView1.Leave += new System.EventHandler(fokussiert); 

, PictureBox 또는 임의의 다른 비 - 선택 가능한 제어.

드롭 다운과 같은 동작이 예상되는 경우 ToolStripControl 호스트에 DataGridView을 호스팅하고 ToolStripDropDown을 사용하여 표시 할 수 있습니다. 이렇게하면 DataGridView 바깥 쪽을 클릭하면 사라집니다. 드롭 다운 메뉴처럼 작동합니다. 또한 그리드는 양식보다 클 수 :

private void button1_Click(object sender, EventArgs e) 
{ 
    this.dataGridView1.Margin = new Padding(0); 
    var host = new ToolStripControlHost(this.dataGridView1); 
    this.dataGridView1.MinimumSize = new Size(200, 100); 
    host.Padding = new Padding(0); 
    var dropdown = new ToolStripDropDown(); 
    dropdown.Padding = new Padding(0); 
    dropdown.Items.Add(host); 
    dropdown.Show(button1, 0,button1.Height); 
} 

enter image description here

중요 참고 : 그것은 예입니다. 실제 응용 프로그램에서 객체 삭제에주의하는 것이 좋습니다. 예를 들어, 하나만 ToolStripdropDown을 사용하고 양식을 닫을 때 폐기하십시오.

+0

솔루션 설명을 시도했지만 dropdown.Show()를 사용하여 오류 메시지가 표시되었습니다. 'System.Windows.Forms.ToolStStStatusLabel'에서 'System.Windows.Forms.Control'으로 변환 할 수 없습니다. 문제는 라벨을 클릭하여 모든 것을 시도한 것일 수 있습니까? – MaChaToc

+0

이제는 컨트롤을 참조 점으로 사용해야했습니다. 예를 들어 그룹 상자 또는 예제 에서처럼 버튼 하나만 있으면됩니다. 내 허위는 내가 레이블을 통제 할 줄 알았다. – MaChaToc

+0

좋아요! 참조 컨트롤을 사용하지 않고 드롭 다운을 표시 할 수도 있습니다. 'Show' 메소드의 다른 오버로드를 살펴보십시오. –

0

당신은 당신의 텍스트 박스를 클릭 할 때 당신의 dgv도 사라지 길 원합니까? 이게 네가 말하는거야? 이벤트 핸들러가 할당

private void dataGridView1_Leave(object sender, EventArgs e) 
    { 
     dataGridView1.Visible = false;   
    } 

    private void Form1_Click(object sender, EventArgs e) 
    { 
     dataGridView1.Visible = false; 
    } 
1

변경 : 당신이 Form 클릭하면

+0

'Form' 또는'ToolStripButton','PictureBox' 또는 기타 선택 불가능한 컨트롤을 클릭하면'Leave'가 발생하지 않습니다. –

+0

@JRoller 그것은 나를 위해 아무것도 바뀌지 않았습니다. 이 Eventhandler는 어디에서 정의 했습니까? 내 디자이너에서 정의했기 때문에. – MaChaToc

관련 문제