내가 선택한 목록 상자에 항목이 하나 있는데, 그 항목의 첫 번째 항목에 대한 확인란을 비활성화하고 싶습니다.
즉, CheckedListBox의 첫 번째 항목을 사용하지 않도록 설정하려면 시각적으로 옵션을 사용할 수 없다는 것을 사용자에게 알리고 싶습니다.checklistbox에서 체크 박스를 비활성화하는 방법은 무엇입니까?
답변
CheckedListBox는 이러한 방식으로 작동하지 않습니다. CheckedListBox.Items은 문자열 모음이므로 "사용 안 함"으로 설정할 수 없습니다.
항목을 사용하지 않도록 설정하는 것은 좋은 생각이 아니므로 사용자가 확인란을 클릭해도 아무런 효과가 없다는 좋은 의견은 없습니다. 맞춤형 그림을 사용하여이를 분명하게 볼 수는 없습니다. 가장 좋은 방법은 단순히 항목을 생략하는 것입니다.
당신은 그러나 쉽게 ItemCheck 이벤트로 사용자를 물리 칠 수 있습니다
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) {
if (e.Index == 0) e.NewValue = e.CurrentValue;
}
ItemChecking
사용하는 것입니다
:
_myCheckedListBox.ItemChecking += (s, e) => e.Cancel = true;
이 모든 항목에서 모든 검사를 취소됩니다 만, 당신은 항상 더 세련된 솔루션을 할 수 있지만 현재를 테스트 할 수 있습니다. .SelectedItem
다음 항목을 사용하지 않으려면 :
checkedListBox1.SetItemCheckState(0, CheckState.Indeterminate);
SetItemCheckState
음영 모양 위의 부분적인 답변이 결합
이것은 회색으로 보이지만 사용자가 항목을 검사하지 못하도록합니다 (청취자를 구현하여 수행 할 수 있습니다) – personne3000
나를 위해 큰 일을 표시하는 데 사용됩니다 항목 CheckState
열거 불확정의 인덱스를합니다. myState가 비활성화해야합니다 항목에 대한 CheckState.Indeterminate이다
myCheckedListBox.Items.Add(myItem, myState);
: 함께 목록에 항목을 추가 .
myCheckedListBox.ItemCheck += (s, e) => { if (e.CurrentValue == CheckState.Indeterminate) e.NewValue = CheckState.Indeterminate; };
이 당신이 정상적인 목적으로이 목록에 '불확정'를 사용하는 것을 허용하지 않습니다하지만 무엇 하나 것 매우 유사한 모양을 준다 : 그런 다음 변경되는 해당 항목을 유지하기 위해 이벤트 처리기를 추가 무능한 품목을 위해 예상하고 정확한 행동을 제공한다!
동일한 작업을 시도한 결과이 이벤트 핸들러는 작성된대로 비활성화 된 후에는 'disabled'확인란을 프로그래밍 방식으로 다시 활성화합니다. ItemCheck 이벤트가 발생하면 기존의 불확정 상태가 표시되어 무시됩니다. 대부분의 경우 상태 변경이 사용자가 시작한 것인지 또는 프로그래밍 방식인지를 확인하기 위해 추가 부울 검사가 필요합니다. 물론, 경쟁 조건으로부터 부울을 보호하는 방법은 독자의 연습입니다 ... – jimbobmcgee
나는 그것이 꽤 오래되었지만 목록 상자를 검색 할 때 이것을 발견했으며 토론에 추가 할 것이라고 생각했습니다.
목록 상자가 있고 확인란을 모두 사용하지 않도록 설정하면 클릭 할 수 없지만 컨트롤을 사용하지 않도록 설정하면 사용자가 여전히 스크롤 할 수 있습니다.당신은이 작업을 수행 할 수 있습니다
이첫째, 내가 양식을로드하는 동안 목록에 추가로 그렇게 확인란이 회색으로 표시되었다 만든 : 내가 쓴 헬프 데스크 응용 프로그램에서 그것을 어떻게
다음listbox.SelectionMode = SelectionMode.None
이야
private void chkLst_SelectedIndexChanged(object sender, EventArgs e)
{
if (chkLst.SelectedItem.ToString() == "SpecificGroupName")
{
chkLst.SetItemCheckState(chkLst.SelectedIndex, CheckState.Indeterminate);
}
}
목을 : 클릭하면 그것을 클릭 상태로 유지 보장하도록
private void frmMain_Load(object sender, EventArgs e)
{
List<string> grpList = new List<string>();
ADSI objADSI = new ADSI();
grpList = objADSI.fetchGroups();
foreach (string group in grpList)
{
if (group == "SpecificGroupName")
{
chkLst.Items.Add(group, CheckState.Indeterminate);
}
else
{
chkLst.Items.Add(group);
}
}
는 그럼 난 이벤트를 사용 여기서 아이디어 란 내 양식에서 항목 클릭/선택을 상자가 확인하도록 설정 한 것입니다. 이 방법으로 한 돌로 두 마리의 새를 죽일 수 있습니다. 이 이벤트로 인해 항목을 처음 확인하고 양식로드 중에 추가 할 때 문제가 발생하지 않도록 할 수 있습니다. 체크 박스를 선택하면 아이템 체크 이벤트 대신이 이벤트를 사용할 수 있습니다. 궁극적으로 아이디어는 부하가 걸리는 동안 그것을 엉망으로 만드는 것입니다.
내 앱에서 특정 OU에 존재하는 AD 그룹의 목록을 잡아 내고 있기 때문에 인덱스 번호가 무엇인지는 알 수 없습니다.
이것이 좋은 생각인지 아닌지는 상황에 따라 다릅니다. 비활성화 할 항목이 다른 설정에 종속되는 또 다른 앱이 있습니다. 이 응용 프로그램에서 나는 헬프 데스크가이 그룹이 필요하다는 것을 알기를 원합니다. 코드 아래
시도 :
Private Sub CheckedListBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles CheckedListBox1.MouseUp
If (Condition) Then
Me.CheckedListBox1.SelectedIndex = -1
End If
End Sub
나는 대체 솔루션이 Telerik
구성 요소를 사용하여 생각합니다. 이 게시물은 꽤 오래지만
, 마지막에 추가 답이
, 올해 월에 제출하고 나는이 사람을 도움이되기를 바랍니다되었습니다
RadListControl
당신에게 해당 옵션을 제공 할 수 있습니다. 같은 일부 기능이 필요하며 따라서 모두 및 장애인 점검 어디에 옵션의 목록을 제공하고 설치, 많은 행동 체크리스트 박스 :
나는 비슷한 후였다.
이 게시물 (Can I use a DrawItem event handler with a CheckedListBox?) 덕분에 나는 그것을 처리하여 CheckedListBox 컨트롤을 서브 클래 싱했습니다.
연결된 포스트 상태의 OP로 CheckedListBox 컨트롤에서 OnDrawItem 이벤트가 발생하지 않으므로 서브 클래 싱이 필요합니다.
매우 기본이지만 작동합니다. 이것은 (확인란을 위의 비교입니다) 모습입니다 :
참고 : 그것을 클릭하면 ( 아무런 효과가 없습니다까지로 : 장애인 항목이 정말 사용할 수 입니다 나는 말할 수있다).
public class CheckedListBoxDisabledItems : CheckedListBox {
private List<string> _checkedAndDisabledItems = new List<string>();
private List<int> _checkedAndDisabledIndexes = new List<int>();
public void CheckAndDisable(string item) {
_checkedAndDisabledItems.Add(item);
this.Refresh();
}
public void CheckAndDisable(int index) {
_checkedAndDisabledIndexes.Add(index);
this.Refresh();
}
protected override void OnDrawItem(DrawItemEventArgs e) {
string s = Items[e.Index].ToString();
if (_checkedAndDisabledItems.Contains(s) || _checkedAndDisabledIndexes.Contains(e.Index)) {
System.Windows.Forms.VisualStyles.CheckBoxState state = System.Windows.Forms.VisualStyles.CheckBoxState.CheckedDisabled;
Size glyphSize = CheckBoxRenderer.GetGlyphSize(e.Graphics, state);
CheckBoxRenderer.DrawCheckBox(
e.Graphics,
new Point(e.Bounds.X + 1, e.Bounds.Y + 1), // add one pixel to align the check gliph properly
new Rectangle(
new Point(e.Bounds.X + glyphSize.Width + 3, e.Bounds.Y), // add three pixels to align text properly
new Size(e.Bounds.Width - glyphSize.Width, e.Bounds.Height)),
s,
this.Font,
TextFormatFlags.Left, // text is centered by default
false,
state);
}
else {
base.OnDrawItem(e);
}
}
public void ClearDisabledItems() {
_checkedAndDisabledIndexes.Clear();
_checkedAndDisabledItems.Clear();
this.Refresh();
}
}
이처럼 사용이 누군가를 도울 수
checkedListBox.Items.Add("Larry");
checkedListBox.Items.Add("Curly");
checkedListBox.Items.Add("Moe");
// these lines are equivalent
checkedListBox.CheckAndDisable("Larry");
checkedListBox.CheckAndDisable(0);
희망 는 그리고 이것은 코드입니다.
이 나를 위해 작동합니다 항목이 없음을 의미
checkedListBox1.SelectionMode = SelectionMode.None;
가
를 선택할 수 있습니다없음 : 항목을 선택할 수 없습니다.
자세한 내용은 여기에서 확인할 수 있습니다. SelectionMode Enumeration.
- 1. 체크 박스를 체크 검증
- 2. iOS에서 간단한 체크 박스를 만드는 방법은 무엇입니까?
- 3. jquery로 로컬 체크 박스를 만드는 방법은 무엇입니까?
- 4. listview 행에서 체크 박스를 수신하는 방법은 무엇입니까?
- 5. listview에 체크 박스를 추가하는 방법은 무엇입니까?
- 6. 이미지로 큰 체크 박스를 만드는 방법은 무엇입니까?
- 7. 체크 박스를 비밀번호로 보호하는 방법은 무엇입니까?
- 8. 기본적으로 선택되어있는 체크 박스를 표시하는 방법은 무엇입니까?
- 9. checklistbox에서 현재 체크 항목을 가져 오는 방법
- 10. 은 체크 박스를
- 11. 체크 박스를 사용하여 수신자 활성화
- 12. checklistbox에서 선택한 항목을 얻는 방법
- 13. 클래스가있는 체크 박스를 제외한 모든 체크 박스를 선택 취소 하시겠습니까?
- 14. 체크 박스를 설정 한 프로그램과 체크 박스를 클릭하는 사용자를 구별하십시오.
- 15. 체크 박스를 링크로 만드시겠습니까?
- 16. 마지막 체크 박스를 받으십시오
- 17. 모든 체크 박스를 선택하십시오
- 18. 편집란에서 체크 박스를 선택했습니다.
- 19. 체크 박스를 선택하거나 해제하십시오
- 20. 체크 박스를 확인할 수 없음
- 21. 체크 박스를 사용하여 문자열을 작성하십시오.
- 22. 체크 박스를 클릭 한 후 체크 박스를 체크 표시/체크 해제하지 않습니다.
- 23. 모든 체크 박스를 체크/체크하지 않음
- 24. 선택한 요소가있는 체크 박스를 체크 표시로 표시
- 25. 체크 표시하지 않고 체크 박스를 봅니까?
- 26. 체크 박스를 반복하고 체크 표시가있는 경우
- 27. 사용자가 체크 한 체크 박스를 체크하지 않음
- 28. 조건부 체크 박스 목록에서 체크 박스를 선택하십시오.
- 29. 체크 박스를 사용하여보기에서 무언가를 체크 표시하는 방법?
- 30. 안드로이드의 특정 이벤트에서 모든 체크 박스를 확인하는 방법은 무엇입니까?
thnx이지만 시각적으로 옵션을 사용할 수 없음을 사용자에게 알리고 싶습니다. –
"사용자 정의 도면을 사용할 수 없습니다"- 사실이 아니지만 약간 어려울 수 있습니다. * 텍스트 *를 비활성화 된 것으로 사용자 정의하는 것이 더 쉬울 것입니다 * 및 * 여기 제공된 비활성화 코드를 사용하십시오. –
사용자 지정 드로잉을 다시 구현하면 CheckedListBox를 사용하는 지점을 무력화하고 ListBox를 사용할 수도 있습니다. 명시된 바와 같이 옵션을 사용할 수 없다는 것을 분명히하는 간단한 방법은 Items 컬렉션에서이를 제거하는 것입니다. –