1

. 2つのテキストボックスでコンパイルされ、たとえば一方が持っている場合ともう一方が持っている場合で区切られたデータベースに保存される文字列があり、データベースにTextBox保存されます。252.5

私が今抱えている問題は、保存された回答の読み込みです。文字列の特定の文字だけにバインドする方法はありTextBox.Textますか(つまり、最初のテキストボックスは常にSavedAnswer[0]あり、他のテキストボックスは常になりますSavedAnswer[2])、またはコンバーターを作成し、完全な回答を渡してから解析する必要がありますか?

4

3 に答える 3

3

あなたがそれについて行くことができるいくつかの方法があります。最も簡単な方法は、モデルに、別々にバインドする2つの関連するプロパティを持たせることです。重要な部分は、変更を反映するためにUIで適切に機能するPropertyChangedように、イベントが発生することを確認することです。Binding

例:

public class MyModel : INotifyPropertyChanged
{
  string fullAnswer;

  public event PropertyChangedEventHandler PropertyChanged;

  public string FullAnswer
  {
    get { return fullAnswer; }
    set
    {
      if(string.Equals(value, fullAnswer)) return; // skip for equal values

      fullAnswer = value;
      OnPropertyChanged("FullAnswer");
      OnPropertyChanged("Answer1");
      OnPropertyChanged("Answer2");
    }
  }

  public string Answer1
  {
    get
    {
      if(fullAnswer == null) return null;

      var tokens = fullAnswer.Split('.');
      if(tokens.Length < 1) return string.Empty;

      return tokens[0];
    }
  }

  public string Answer2
  {
    get
    {
      if(fullAnswer == null) return null;

      var tokens = fullAnswer.Split('.');
      if(tokens.Length < 2) return string.Empty;

      return tokens[1];
    }
  }

  protected void OnPropertyChanged(string propertyName)
  {
    var handler = this.PropertyChanged;

    if(handler != null)
      handler(this, new PropertyChangedEventArgs(propertyName));
  }
}
于 2013-01-17T18:50:35.627 に答える
0

文字列の名前が「str」で、常に「。」が含まれていると仮定します。性格:

TextBox1.Text = str.Split('.')[0];
TextBox2.Text = str.Split('.')[1];

または:

string[] SavedAnswer = str.Split('.');
TextBox1.Text = SavedAnswer [0];
TextBox2.Text = SavedAnswer [1];
于 2013-01-17T18:39:33.307 に答える
0

これらの3つのプロパティを使用します。

public string FullNumber
{
    get
    {
        if (String.IsNullOrEmpty(DecimalPart)) {
            return IntegerPart;
        } else if (String.IsNullOrEmpty(IntegerPart)) {
            return "0." + DecimalPart;
        }
        return IntegerPart + "." + DecimalPart;
    }
    set
    {
        if (String.IsNullOrEmpty(value)) {
            IntegerPart = "";
            DecimalPart = "";
        } else if (value.Contains(".")) {
            string[] parts = value.Split('.');
            IntegerPart = parts[0];
            DecimalPart = parts[1];
        } else {
            IntegerPart = value;
            DecimalPart = "";
        }
    }
}

public string IntegerPart { get; set; }
public string DecimalPart { get; set; }

FullNumber完全な番号を取得および設定するために使用できるため、DBから番号を読み取るとき、または番号をDBに保存するときに使用されます。およびプロパティはIntegerPartDecimalPart2つのテキストボックスにバインドされます。データバインディングを使用したくない場合は、これら2つのプロパティを削除して、プロパティのコード内の任意の場所で置き換えることができIntegerPartます。textBox1.TextDecimalParttextBox2.TextFullNumber

これは、数値が空nullであるかどうか、および小数点が含まれているかどうかに関係なく機能します。

于 2013-01-17T19:11:14.797 に答える