작업중인 작은 응용 프로그램에서 CheckedListBox 컨트롤을 사용하고 있습니다. 그것은 좋은 통제이지만, 한가지는 저를 귀찮게합니다; 실제로 확인란을 선택했을 때 항목 만 검사하도록 속성을 설정할 수 없습니다. 이 문제를 극복하는 가장 좋은 방법은 무엇입니까? 나는 체크 상자의 왼쪽에서 친숙한 mouseclick의 위치를 얻으려고 생각 해왔다. 부분적으로 작동하지만 왼쪽에 충분히 가까운 빈 공간을 클릭하면 현재 선택한 항목이 계속 확인됩니다. 이것에 관한 아이디어가 있습니까?CheckedListBox 컨트롤 - 실제 확인란을 클릭 할 때 확인란 만 선택합니다.
답변
음, 꽤 추한,하지만 당신은 내가이 스레드가 조금 오래된 알고 다음
/// <summary>
/// In order to control itemcheck changes (blinds double clicking, among other things)
/// </summary>
bool AuthorizeCheck { get; set; }
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if(!AuthorizeCheck)
e.NewValue = e.CurrentValue; //check state change was not through authorized actions
}
private void checkedListBox1_MouseDown(object sender, MouseEventArgs e)
{
Point loc = this.checkedListBox1.PointToClient(Cursor.Position);
for (int i = 0; i < this.checkedListBox1.Items.Count; i++)
{
Rectangle rec = this.checkedListBox1.GetItemRectangle(i);
rec.Width = 16; //checkbox itself has a default width of about 16 pixels
if (rec.Contains(loc))
{
AuthorizeCheck = true;
bool newValue = !this.checkedListBox1.GetItemChecked(i);
this.checkedListBox1.SetItemChecked(i, newValue);//check
AuthorizeCheck = false;
return;
}
}
}
그래, 내가 방공호에서 말했듯이, 이것에 대해서도 생각하고 있었지만, 기분이 좋지 않아 대체물을 찾기 시작했다. :) – Oxymoron
고마워, 그냥 작동 해! 몇 가지 최적화가 가능하지만 그 아이디어는 효과가 있습니다! – nightcoder
CheckedListBox의 확인란 텍스트는 기본적으로 확인란 입력 후 HTML 레이블을 배치하고 레이블의 "for"특성을 확인란 ID로 설정합니다.
레이블이 "for"인 요소를 나타내는 경우 해당 레이블을 클릭하면 브라우저에 해당 요소 (즉,보고있는 요소)에 초점을 맞 춥니 다.
두 가지 옵션은 목록이 정적 인 경우 별도의 CheckBox 컨트롤과 텍스트 (CheckBox의 Text 속성이 아닌 CheckBoxList와 동일 함)로 자체 목록을 렌더링하는 것이지만 Repeater 목록이 동적 인 경우. '
그것은 웹 폼이 아니라 winform입니다. 그러나 나는 당신의 드리프트를 얻습니다. 초점을 맞추는 것이 좋고 실제로 원하는 것입니다. 항목 자체를 클릭 할 때 확인란을 선택하지 않기를 바랍니다. 사용자 정의 컨트롤을 사용하여 주변을 둘러 볼 것 같습니다. – Oxymoron
태그가있는 경우에만 C# 및 CheckedListBox가 있었는지 확인하기가 어렵습니다. 나는 앞서 가서 winform을 추가했다. –
처럼 CheckedListBox.MouseDown
및 CheckedListBox.ItemCheck
에 접선에 의해 히트 항목의 사각형에 좌표 마우스를 계산할 수 있지만, 내가 돈
private void checkedListBox1_MouseClick(object sender, MouseEventArgs e)
{
if ((e.Button == MouseButtons.Left) & (e.X > 13))
{
this.checkedListBox1.SetItemChecked(this.checkedListBox1.SelectedIndex, !this.checkedListBox1.GetItemChecked(this.checkedListBox1.SelectedIndex));
}
}
(CheckOnClick = True
의 값) : t은 다른 솔루션을 제공하는 문제를 생각합니다.
너는 직사각형에 그 물건을 사용할 수 있지만, 왜 그것을 더 복잡하게 만드는지.
다른 해결책은 단순히 Treeview를 사용하는 것입니다.
CheckBoxes를 true, ShowLines을 false, ShowPlusMinus를 false로 설정하면 CheckedListBox와 기본적으로 동일합니다. 항목은 실제 CheckBox를 클릭 할 때만 선택됩니다.
CheckedListBox는 훨씬 단순하지만 TreeView는 프로그램에 더 적합한 옵션을 많이 제공합니다.
시도해보십시오. iLastIndexClicked를 폼 수준의 int 변수로 선언하십시오.
private void chklst_MouseClick(object sender, MouseEventArgs e)
{
Point p = chklst.PointToClient(MousePosition);
int i = chklst.IndexFromPoint(p);
if (p.X > 15) { return; } // Body click.
if (chklst.CheckedIndices.Contains(i)){ return; } // If already has focus click anywhere works right.
if (iLastIndexClicked == i) { return; } // native code will check/uncheck
chklst.SetItemChecked(i, true);
iLastIndexClicked = i;
}
그냥 사용자가 체크리스트 (체크 박스 영역)의 왼쪽에 15 개 픽셀을 클릭 있는지 확인
은 현재 선택한 항목을 다시 검사를 제외한 모든 시간에 작동합니다. 마지막 인덱스를 저장하고 변경하지 않고 종료하면 네이티브 코드가 제대로 처리하도록 설정하고,이 경우에 체크하도록 설정하려고하면 "ItemCheck"코드가 실행될 때 다시 꺼집니다.- 1. 클릭 요소가 옵션을 선택합니다.
- 2. 아이콘이 지원되는 CheckedListBox 컨트롤 찾기
- 3. Infopath 2007 : 확인란 컨트롤 숨기기
- 4. ASP에서 이름 만 반환 할 때 JS에서 ID로 컨트롤 선택
- 5. ArrayAdapter를 사용하는 ListView : 확인란을 클릭 할 때 모델 업데이트
- 6. 속성을 클릭 할 때 확인란을 바인드하면 어떻게 업데이트됩니까?
- 7. ASP.NET 확인란 컨트롤
- 8. 링크를 선택하고 왼쪽의 확인란을 자동으로 선택합니다.
- 9. Word UserForm의 확인란 컨트롤
- 10. Winforms checkedlistbox 하나의 항목 만 선택하십시오.
- 11. 여러 확인란이 Gmail에서와 같이 여러 개의 확인란을 선택합니다.
- 12. 실제 마우스 클릭 시뮬레이션
- 13. jQuery로 그룹의 확인란 선택
- 14. 양식의 모든 확인란을 선택하십시오.
- 15. C# TreeNode 컨트롤, 노드를 클릭 할 때 프로그램을 어떻게 실행합니까?
- 16. 텍스트 상자를 클릭 할 때 ModalPopUpExtender에서 사용자 정의 컨트롤 열기
- 17. 입력 할 때 컨트롤 닫기
- 18. div를 숨길 때 jQuery 지우기 확인란?
- 19. 확인란
- 20. 이미지를 전환 할 때 클릭 할 때
- 21. Datagridview 확인란 열만 하나의 확인란을 선택할 수 있습니다.
- 22. 자바 스크립트 - 여러 개의 체크 박스가 선택된 경우 확인란을 선택합니다.
- 23. CheckedListBox 항목
- 24. 게시 할 때 GridView 확인란 상태 유지
- 25. CheckedListBox SetItemCheckState
- 26. C# 클릭 할 때마다 컨트롤 추가
- 27. javascript .submit()을 사용하여 AJAX 레일 확인란을 선택합니다.
- 28. 확인란을 선택하면 다른 드롭 다운을 기반으로 드롭 다운을 자동으로 선택합니다.
- 29. 네이티브 CheckedListBox?
- 30. 배경 영역을 클릭 할 때 WPF 팝업이 닫히는 이유는 무엇입니까?
아마도 뭔가가 빠졌습니다. 상자를 확인하면 지금 무슨 일이 벌어지고 있습니까? 아무것도? 기본적으로 무언가를 확인하고 있습니까? 무슨 일이 일어나고 싶지 않으세요? – hunter
상자를 클릭 할 때 상자가 선택 되기만 원할뿐입니다. 다음과 같이 상상해보십시오 : [] Item1 현재 전체 항목을 클릭하면 상자가 선택되지만 원하는 것은 아닙니다. 나는 상자 자체를 클릭 할 때만 클릭하기를 원합니다. 옆에 설명이있는 텍스트가 아니라 클릭하기를 원합니다. – Oxymoron
당신은 여분의 레이블, 단지 체크 박스리스트를 사용하고 레이블을 만들 수 있습니다 .. 그것은 훌륭하게 해결되었지만 작동합니다 :> – Tyzak