일반적인 채색이있는 Windows Forms 콤보 상자를 만들려하고 드롭 다운 목록을 표시 할 수 있지만 값을 실제로 변경할 수는 없습니다. 내가 알 수있는 한, 모든 조언은 콤보 상자의 대화 형 기능을 사용하지 않도록 설정 한 것 같으므로 How to make Combobox in winforms readonly의 복제본이 아닙니다.읽기 전용 (그러나 droppable) ComboBox
내 이론적 근거 : 모든 컨트롤이 읽기 전용 인 양식이 있으며 응용 프로그램의 특성상 콤보 상자의 값이 변경되지 않으면 사용자가 혼란에 빠질 위험이 없다고 생각합니다. . 나는 사용자가 콤보 상자가 바인딩 된 열거 형의 가능한 모든 값을 볼 수 있기를 바랍니다. 내가 지금까지 무엇을 가지고
는 아주 나쁜 해킹 :
public partial class ReadOnlyComboBox : ComboBox
{
int prevIndex = -1;
public ReadOnlyComboBox()
{
InitializeComponent();
}
private void ReadOnlyComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (prevIndex <= 0)
prevIndex = SelectedIndex;
else
SelectedIndex = prevIndex;
}
}
효과,이 프레임 워크에서 가짜 "0"값을 무시하고 바인딩 소스로부터 획득 한 최초의 비 - 제로 값을 사용합니다. 즉각적인 단점은 값을 한 번만 설정할 수 있으며 바인딩 된 열거 형은 1부터 시작해야한다는 것입니다.
이 문제를 정리하는 방법에 대한 조언은 언제나 환영합니다. 감사.
에서, "DropDownStyle"속성을 사용하여 일반 콤보가 "DropDownList로"로 설정 명확하게하기 위해 올바른, 당신이 원하는 아닌가요? – Inisheer
사실 나는 위의 내용 외에도 DropDownList를 원합니다. – Reinderien
그래, DropDownList는 편집 할 수없는 항목을 표시합니다. 변경을 막으려면 어떻게 원래 채워지는 ... 상태/진행중인 작업 업데이트와 같은 다른 프로세스에서? 또는 사용자가 레코드를 처음 만들 때 편집 할 수있게하고 초기 생성 값 설정 후 사용자가 변경하지 못하도록 하시겠습니까? – DRapp