Windows 양식에서 회색으로 표시하지 않고 콤보 상자의 값 변경을 비활성화하는 방법이 있습니까? 몇 가지 게시물을 보았지만 WPF 용이었고 제 상황에 도움이되지 못했습니다. 에 이러한 설정회색으로 표시하지 않고 WinForms에서 콤보 박스를 비활성화 할 수 있습니까?
답변
당신의 comobobox
당신이 찾고있는 트릭을 할 것입니다, 콤보가 활성화되어 있지만 아무도 만약 어떤 이유로 당신을 위해
comboBox1.DropDownHeight = 1;
comboBox1.KeyDown += (s, e) => e.Handled = true;
comboBox1.KeyPress += (s, e) => e.Handled = true;
comboBox1.KeyUp += (s, e) => e.Handled = true;
: = 장애인 그래서 외관 = 사용, 행동을 변경하거나 아무 것도 입력 할 수 있습니다 람다를 사용할 수 없으면 다음 핸들러를 연결할 수 있습니다. 오른쪽 클릭 -> 붙여 넣기는 DropDownStyle = DropDown 인 경우 추가로 처리해야합니다.
//void comboBox1_KeyUp(object sender, KeyEventArgs e)
//{
// e.Handled = true;
//}
//void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
//{
// e.Handled = true;
//}
//void comboBox1_KeyDown(object sender, KeyEventArgs e)
//{
// e.Handled = true;
//}
그런 다음 자신의 처리기를 변수로 저장하고 그 뒤에 간단히 - = 뒤에 입력하십시오.
예 :
var keyDown = (s, e) => e.Handled = true;
var keyPress = (s, e) => e.Handled = true;
var keyUp = (s, e) => e.Handled = true;
그런 다음에 대체 자신과 그런 다음
comboBox1.KeyDown += keyDown;
comboBox1.KeyPress += keyPress;
comboBox1.KeyUp += keyUp;
제거 할 때
comboBox1.KeyDown -= keyDown;
comboBox1.KeyPress -= keyPress;
comboBox1.KeyUp -= keyUp;
var를 사용하는 것만 큼 간단하지는 않습니다. Sanjeevakumar의 메소드와 - = 그 메소드를 사용하십시오. –
또는 someBoolVar가 활성화/비활성화 상태 인 경우 'e.Handled = someBoolVar'를 사용하십시오. –
DropDownHeight의 높이를 어떻게 재설정합니까? 처음에 높이를 저장해야합니까? 다시 활성화하려면 재설정할까요? – MBU
을의 GotFocus 투수에서 (그것이라고 무엇이든) 초점을 다른 것으로 설정하십시오.
아니, 충분하지 않습니다. 사용하지 않도록 설정하고 이 정확히처럼 보이게하여 사용자가 완전히 바보가되도록합니다. 새 클래스를 추가하고이 코드를 붙여 넣습니다.
using System;
using System.Drawing;
using System.Windows.Forms;
class FakeComboBox : ComboBox {
private PictureBox fake;
public new bool Enabled {
get { return base.Enabled; }
set { if (!this.DesignMode) displayFake(value);
base.Enabled = value;
}
}
private void displayFake(bool enabled) {
if (!enabled) {
fake = new PictureBox();
fake.Location = this.Location;
fake.Size = this.Size;
var bmp = new Bitmap(fake.Size.Width, fake.Size.Height);
this.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
fake.Image = bmp;
this.Parent.Controls.Add(fake);
fake.BringToFront();
fake.Click += delegate { Console.Beep(); };
}
else {
this.Parent.Controls.Remove(fake);
fake.Dispose();
fake = null;
}
}
}
다시 활성화하면 Win7에서 매우 작은 '발광'이 발생합니다. 매우 흥미 롭습니다.
하하, 환상적입니다. 불합리한 점은 DropDownHeight를 0으로 설정하는 것보다 훨씬 좋은 해결책입니다. –
Beep()을 잊어 버렸습니다. –
이 컨트롤을 활성화하면 다시 활성화를 설정하십시오. 이 코드는 null 인'fake'를 처리하려고합니다. 예외를 던집니다. 둘째로 여전히 회색으로 보입니다. 활성화 된 콤보처럼 보일 경우 모든 테마 변경 사항을 처리해야합니다. –
- 1. 콤보 상자의 항목 비활성화
- 2. win 7은 콤보 박스를 칠할 수 없습니다.
- 3. 체크 박스를 클릭하면 페이지 리디렉션을 어떻게 비활성화 할 수 있습니까?
- 4. 체크 표시하지 않고 체크 박스를 봅니까?
- 5. UISearchBar- 테이블을 회색으로 표시하지 않고 범위를 변경 하시겠습니까?
- 6. 이벤트 리스너를 제거하지 않고 비활성화 할 수 있습니까?
- 7. Winforms 콤보 박스를 타이핑하지 못하도록 변경할 수 있습니까?
- 8. Windows 형태로 전체 콤보 박스를 클릭 할 수있는 방법이 있습니까?
- 9. PreferenceScreen을 표시하지 않고 DialogPreference를 표시 할 수 있습니까?
- 10. 어떻게 스크롤바를 표시하지 않고 div를 스크롤 할 수 있습니까?
- 11. 콤보 박스를 다른 DataContext에 바인딩
- 12. wpf에서 콤보 박스를 만들고 싶습니다.
- 13. 계단식 콤보 박스를 작동시키지 못함
- 14. 조회 콤보 박스를 어떻게 바인딩합니까?
- 15. ScrollViewer 내부에서 ScrollViewer를 비활성화 할 수 있습니까?
- 16. Eclipse에서 리펙터 미리보기를 비활성화 할 수 있습니까?
- 17. treenode에서 비활성화 된 체크 박스를 표시하는 방법
- 18. RadComboBox 버튼을 사용하면 하나의 콤보 박스가 선택 될 때 다른 콤보 박스를 채울 수 있습니까?
- 19. Winforms에서 드롭 다운 목록에없는 값을 허용하도록 콤보 상자를 구성 할 수 있습니까?
- 20. 어떻게 winforms에서 콤보 상자를 리바 인 딩합니까?
- 21. "쓸 수 없음! - 루트 .plist"빌드시 회색으로 회색으로 표시됩니다.
- 22. 플래시 요소를 비활성화 할 수 있습니까?
- 23. vs2008에서 자동 서식을 비활성화 할 수 있습니까?
- 24. phpBB 로그인을 무시하거나 비활성화 할 수 있습니까?
- 25. Minify에서 'minify-cation'을 비활성화 할 수 있습니까?
- 26. 음성 인식 카드를 비활성화 할 수 있습니까?
- 27. 어떻게 스크롤 뷰를 비활성화 할 수 있습니까?
- 28. 어떻게 _moz_resizing을 비활성화 할 수 있습니까?
- 29. UITouch - 다중 탭을 비활성화 할 수 있습니까?
- 30. 어떻게 Microsoft.VisualStudio.TestTools.TestTypes.Unit.TestFailedException을 비활성화 할 수 있습니까?
변경 사항을 거부하려면 해당 메소드를 처리하고 그렇게하십시오. –
그러면 정상적으로 보이지만 대화 상자를 사용할 수없는 콤보 상자를 원하십니까? 이 사용 불능 상태에 있음을 사용자에게 어떻게 나타내 보시겠습니까? –
이것은 정말로 나쁜 생각입니다. 콤보 상자를 회색으로 표시하는 것은 사용자가 비활성화되어 있고 수정할 수 없다는 것을 사용자가 알 수있는 방법입니다. * 보이지만 활성화 된 콤보 상자는 사용자의 편집 시도를 무시하고 혼란스럽지 않습니다. 그 인터페이스를 부러 뜨릴 것입니다 **. –