2011-08-05 3 views
0

메뉴 막대, 메뉴 및 menuItem (BlaBlub)이있는 WinForm이 있습니다.
메뉴 항목 값의 설정 파일로부터 정확하게 판독.NET WinForms PropertyBinding

상기 설정 SomeBool (FALSE bool 형식, 범위는 사용자의 초기 값 =)로 CheckOnClick = True(ApplicationSettings)->(PropertyBindings)->Checked 매핑했다 (I 라벨을 이용해도를 확인하고 세션간에 파일을 변경하면 메뉴 항목이 선택되거나 선택 취소됩니다.

그러나, 다음과 같은 코드를 사용하여 나는, 다시 파일

내가 파일로 다시 값을 저장 할 수 있었다
private void Form1_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     Properties.Settings.Default.Save(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     label1.Text = string.Format("Value is: {0}", Properties.Settings.Default.SomeBool); 
    } 

에, 응용 프로그램을 열고 메뉴 항목을 클릭하고 변경된 값을 저장 할 수 없습니다 다음 코드를 사용하여,하지만 이것은 관용적 인 접근 방식으로 보이지 않기 때문에, 나는 이것을 수행하는 방법에 관해서도 여전히 약간의 깨달음을 추구한다.

private void blaBlubToolStripMenuItem_CheckedChanged(object sender, EventArgs e) 
    { 
     Properties.Settings.Default.SomeBool = blaBlubToolStripMenuItem.Checked; 
    } 

답변

1

당신은 말했다 :

값 때문에 부하 당신에 정확하지 않을 것이라고 발표 코드를 기반으로,

그러나 설정 파일에서 제대로 읽기 선택 상태를 설정하지 않습니다. 대신, 나는 당신의 테스트가 초기 지속 설정 값 (false 임)을 보여주고 있다고 생각한다. 또한 메뉴 아이템의 디폴트 Checked 상태이다.

따라서, 당신은 또한 추가하여 너무 컨트롤을 초기화하기해야

private void Form1_Load(object sender, EventArgs e) 
{ 
    label1.Text = string.Format("Value is: {0}", Properties.Settings.Default.SomeBool); 
    blaBlubToolStripMenuItem.Checked = Properties.Settings.Default.SomeBool; 
} 

참고 : 일반적으로 내가 데이터 바인딩을 사용하는 당신에게 말할 것입니다하지만 당신은 내가의 MenuItem의이 지원하지 않는 믿을 수 있기 때문이다.

+0

흠. 그런 다음 응용 프로그램에 많은 중복 코드를 추가하지 않으면 어떻게됩니까? – yas4891

+0

"바인딩"menuitem에 관해서는 기본 프레임 워크가 없습니다. 따라서 컨트롤 상태를 수동으로 구성하고 바인딩 된 속성 값이 변경되면 업데이트를 관리해야합니다. – Reddog

+0

그건 불행한 일입니다. WPF에서이 작업을 수행 할 수있는 방법이 있습니까? – yas4891

관련 문제