0

これは問題の原因となっている行です:

lblClimberInfo.Text = selectedClimber + "\r\n" + "Finished: " + selectedClimber.HasFinished ? "Yes" : "DNF" + "\r\n" + "Time: " + selectedClimber.Hours.ToString("00") + ":" + selectedClimber.Minutes.ToString("00") + ":" + selectedClimber.Seconds.ToString("00");

私のメインクラスから:

private bool hasFinished;

public bool HasFinished
{
    get { return hasFinished; }
    set { hasFinished = false; }
}

boolがtrueの場合は表示Finished: Yesし、boolがfalseの場合は表示し、それを表示するようにしたい。現時点では、デフォルトで表示されますが、ボタンをクリックすると、ブール値を本質的に変更するメソッドが実行されます。HasFinishedFinished: DNFHasFinishedFinished: FalseFinished: TrueFinished:

True出力する代わりにカスタマイズできるようにしたいFalse

4

1 に答える 1

1

演算子の優先順位の問題のため、三項演算子を括弧で囲みます。HasFinishedそれ以外の場合、「時間」は false の場合にのみ表示されます。

lblClimberInfo.Text = selectedClimber + "\r\n" + "Finished: " + (selectedClimber.HasFinished ? 
  "Yes" : "DNF") + "\r\n" + "Time: " + selectedClimber.Hours.ToString("00") + ":" + 
  selectedClimber.Minutes.ToString("00") + ":" + selectedClimber.Seconds.ToString("00");

また、あなたのセッターは非常に興味深いです:

private bool hasFinished;

public bool HasFinished
{
    get { return hasFinished; }
    set { hasFinished = false; }
}

クラスのどこかでプライベート変数を変更しない限り、HasFinished を true にすることは不可能のようです。ただし、プロパティを常に false に設定するセッターを使用する代わりに、セッターを省略してプロパティを読み取り専用にすることをお勧めします。Using Properties in C#を読みたいと思うかもしれません

正しいセッターを定義するには、代わりにこれを使用します。

    set { hasFinished = value; }
于 2013-11-03T21:40:30.733 に答える