2012-09-10 86 views
0

我有兩個公式。Winforms數據綁定挑戰

a = sqrt (b) 

和它的逆

b = a^2 

我想兩個編輯框在一個編輯框中的值,並在其他b的值。如果我手動編輯任一編輯框,另一個按照上面的公式更新。爲了使問題變得更復雜,編輯框應該僅限於顯示兩位小數,而其他文本框的更新只有在按下輸入按鈕或在當前正在編輯的文本框上丟失焦點後才能激活。它也應該是不可能的輸入無效值(無數字)英寸

個別每個小塊似乎並不是一個問題,但將所有要求捆綁在一起我只是無法讓我的頭。

注意a和b的值應該是某些對象上的數據綁定屬性。

回答

0

如果雙更新是給你的問題。

private double? a; 
private double? b; 
public double? A 
{ 
    get 
    { 
     return a; 
    } 
    set 
    { 
     if (a == value) return; 
     a = value; 
     if (a == null) b = null; else b = a * a; 
     NotifyPropertyChanged("A"); 
     NotifyPropertyChanged("B"); 
    } 
} 

public double? B 
{ 
    get 
    { 
     return b; 
    } 
    set 
    { 
     if (b == value) return; 
     b = value; 
     if (b == null) b = null; else a = Math.Sqrt((double)b); 
     NotifyPropertyChanged("A"); 
     NotifyPropertyChanged("B"); 
    } 
} 
+0

沒有雙重更新不是什麼給我的問題。這是整個問題的包裹。我稍後會添加一些代碼示例。爲什麼我把這個問題放在方便的地方,我沒有把它們派上用場。然而,對我來說,問題在於我使用解析和格式化事件來格式化爲2位小數,每當我在編輯框中按一個鍵時,它立即處理它,綁定,觸發解析事件,然後* *格式化事件並重新格式化我正在編輯的字段,並丟失插入位置。 – bradgonesurfing

+0

雖然現在我想起它,但這個代碼是一些遺留代碼庫的一部分,它可能存在一些令人討厭的額外的密鑰處理,我不希望它引起我的問​​題。 – bradgonesurfing