2016-05-21 8 views
0

私は自分自身をプロジェクトマネージャにしています。私は頻繁にプロジェクトリストを更新する必要があります。プロジェクトマネージャを更新するときに、以前に選択したアイテムを選択したいとします。しかし、その選択は、私のテキストボックスを非選択にするので、そのテキストボックスは、1つのキーを入力した後に選択解除されます。テキストボックスを選択したマーク位置の原因について>プログラムは(RefreshProjectListを呼び出す) リストボックスを変更したときに選択されたテキストボックスの選択解除

  • RefreshProjectList() -

    • 私はEditionがプロジェクトに更新が発生する1つのテキストボックス
    • を編集しよう:

      だから、何が起こるかを概説

    • の検索結果を選択解除するために:あなたは

    つのシンボルを書いた後、テキストボックスを選択する必要があります

    These selected text boxes are struggling to be edited

    コード:

    private void RefreshProjectList() { 
         if (BlockListReload) 
          return; 
    
         Project selected = (Project)ProjectList.SelectedItem; 
         ProjectList.Items.Clear(); 
         CurrentlyShown.Clear(); 
    
         foreach(Project p in Projects){ 
          if (p.state == State.Planned && ShowPlanned.Checked) { 
           CurrentlyShown.Add(p); 
           ProjectList.Items.Add(p); 
          } 
          if (p.state == State.Active && ShowActive.Checked) { 
           CurrentlyShown.Add(p); 
           ProjectList.Items.Add(p); 
          } 
          if (p.state == State.Finished && ShowFinished.Checked) { 
           CurrentlyShown.Add(p); 
           ProjectList.Items.Add(p); 
          } 
          if (p.state == State.Delayed && ShowDelayed.Checked) { 
           CurrentlyShown.Add(p); 
           ProjectList.Items.Add(p); 
          } 
         } 
    
         if (selected == null) 
          return; 
    
         if (ProjectList.Items.Contains(selected)) { 
          ProjectList.SelectedItem = selected; // IF I REMOVE THIS 
         } else { 
          if (ProjectList.Items.Count > 0) 
           ProjectList.SelectedIndex = 0; // OR THIS LINE, EVERYTHING WORKS 
         } 
        } 
    

    あなたはより多くのコードが必要な場合は、私が提供させていただきますが、私は役に立たないコードの負荷であなたをスパムしたくありません。

    Q:ListBoxの選択項目を変更すると、TextBoxの選択が解除され、その防止方法が変わるのはなぜですか?

  • +0

    私はエラーがコード内にあるとは思わない。フォーム全体を再初期化しているフォームの新しいインスタンスを作成していると思います。 – jdweng

    +0

    @jdweng私はこれらの行にコメントを付けるとすべてがうまく動作するため、(//ここに)マークされた行によって問題が発生していると確信しています。 (ListBoxがその選択を維持していないことを除いて、私はそれをやっているのです) – Meowxiik

    +0

    HideSelectionはオンですか? – TaW

    答えて

    0

    選択可能なテキストまたは項目を持つコントロールには、HideSelectionというプロパティもあります。

    これには含まれています:

    • TextBox
    • RichTextBox
    • ListView

    なく

    • ListBox
    • CheckedListBox
    • DataGridView
    それのように

    trueに、それは常にデフォルトフォーカスがコントロールから離れている時はいつでもそう選択は隠された..です

    単にデザイナーでfalseに設定し、フォーカスがどこにあってもすべての選択を見ることができます。

    +0

    問題は、選択肢が表示されないということではなく、問題は、これらのテキストボックスに何かを書き込もうとすると、コードにマークされた2行がテキストボックスの選択を解除するということです。だから、もし私がもっと長いものを書こうと思ったら、シンボルを書いた後で毎回クリックしなければならないだろう。 – Meowxiik

    +0

    さて、私はあなたが「もっと長いものを書く」か「シンボルを書く」ということをあなたが何を意味するのか分かりません。 HideSelectionがtrueの間は、フォーカスをテキストボックスに移動するまでは選択項目が表示されません。コースの選択をクリックすることでそれを行う場合は、実際に行っている。最初にHideSelection = falseを設定し、ボックスのSelectedTextを報告するテストボタンを追加します。もしそれが本当に空であれば、実際には__second__という問題があります。しかし、__first__を修正することから始めましょう..! – TaW

    +0

    私の悪い、私は物事を説明することはできません、私は今することを願っています。 通常、問題なくテキストボックスに任意の数の文字を書き込むことができます。しかし、私は私の場合、あなたはテキストボックスに文字を書くと、その2行のテキストボックスの選択が解除されたので、あなたはもはやそれを書くことはできません。したがって、私は文字を入力するたびにそのテキストボックスを選択する必要がある状況で終了します。 – Meowxiik

    0

    OMG。なぜ私はそれを見ていないのか正直に分かりません。

    ProjectList.SelectedItem = selected; 
    //where ProjectList is ListBox<Project> and selected is Project 
    

    ProjectList(ListBox)でアイテムを選択しています。私はそれをやっていたProjectList_SelectedIndexChanged()イベントを呼んでいたことを知らなかった。

    EDIT:これを追加することによって解決:

     if (focused != null) { 
          this.ActiveControl = focused; 
          focused.Select(focused.TextLength,0); 
         } 
    

    焦点を当て、私が選択したテキストボックスを最後に設定すると、これはフォームでテキストボックスです。
    ありがとうございます。

    +0

    __すべてが解決された場合は、回答がある質問があるかどうかを決定する必要があります。これは他人にとって有益で、問題がちょうどタイプミスであった場合などです。あなたの問題がすべて解決されていない場合、これは答えではなく、あなたは質問を編集する必要があります。とにかく:リストボックスで項目を選択すると、何かを__not__で除外します。 – TaW

    +0

    @TaW追加された解決法、私はまだそれが起こっていた理由を知らないが、以前に選択されたTextBoxを手動で選択しました。 – Meowxiik

    +0

    あなたが幸せなら、あなたのために良いです。ただし、__Focus__と__Selection__の間には注意が必要です。実行中のプログラムのコントロールが__選択されたので、__focus__は__focus__を紛失しましたが、__TextSelection__(__hidden_​​_)は失われませんでした。 – TaW

    関連する問題