6

Treeview.HideSelection=false;を変更しました。しかし、フォーカスが失われたときに、選択したアイテムが元の選択した色のままであることを保証するにはどうすればよいですか?

編集:

プロセスイベントのリストを保持するフォームにリストビューがあります。同じフォームのツリービューの横には、リストビューでイベントを分類するためにユーザーが完了する一連の選択があります。ただし、ユーザーが分類コントロールの1つを選択すると、青で強調表示された選択されたTreeviewアイテムが灰色に変わります。この色を定義するプロパティを見つけて、同じ色を青にすることを望んでいました。

助言がありますか。

アップデート:

 public partial class myTreeView : TreeView
{
    TreeNode tn = null;
    public myTreeView()
    {
        InitializeComponent();
    }

    protected override void OnAfterSelect(TreeViewEventArgs e)
    {
        if (tn != null)
        {
            tn.BackColor = this.BackColor;
            tn.ForeColor = this.ForeColor;
        }
        tn = e.Node;
        base.OnAfterSelect(e);
    }
    protected override void OnBeforeSelect(TreeViewCancelEventArgs e)
    {

        e.Node.BackColor = Color.Green;
        e.Node.ForeColor = Color.White;
        base.OnBeforeSelect(e);
    }
    protected override void OnGotFocus(System.EventArgs e)
    {

        base.OnGotFocus(e);
    }

    protected override void OnLostFocus(System.EventArgs e)
    {

        if (tn != null)
        {
            tn.BackColor = Color.Green;
            tn.ForeColor = Color.White;
        }
        // tn.BackColor = Color.Red;

        base.OnLostFocus(e);
    }
}
4

5 に答える 5

11

true に設定ListView.HideSelectionすると、フォーカスが失われたときに選択が非表示になります。false に設定HideSelectionすると、選択されたアイテムには、どのアイテムが選択されているかを示すカラー インジケーターが表示されます。

于 2009-01-19T02:46:58.830 に答える
1

一般的に、あなたはしません。色の変化は、どのコントロールにフォーカスがあるかを示す視覚的な合図の 1 つです。それを取り除いて顧客を混乱させないでください。

慣習に逆らいたい場合は、コントロールをオーナー描画にしてから、アイテムを好きな色にペイントできます。

あなたの場合、別のオプションは、リスト ボックスの代わりにドロップダウン コンボ ボックスを使用することです。次に、コントロールにフォーカスがあるかどうかに関係なく、現在の選択は常にクリアされます。または、各イベントにすべての設定が個別に与えられ、「選択」がまったく問題にならないグリッドの使用を検討することもできます。

于 2009-01-19T02:10:36.517 に答える
0

私がそれを行っていた場合、選択されている分類コントロールの上に、ListView の横に追加のラベルを配置するだけで、どのプロセス イベントが選択されたかを示すことができます。上記のラベルを使用して、イベントに関する追加の詳細を追加することもできます (存在する場合)。

このようにして、標準の UI 規則に固執しユーザーが現在選択しているものをより明確にします。

于 2009-01-19T12:35:18.050 に答える
0

このコードを使用します。わたしにはできる。

設計:Mytreeview.HideSelection = Trueフォーカスを失った選択ノードを手動で強調表示します。

Private Sub MyTreeview_Leave(sender As Object, e As EventArgs) Handles MyTreeview.Leave
    MyTreeview.SelectedNode.BackColor = Color.LemonChiffon
End Sub

Private Sub MyTreeview_BeforeSelect(sender As Object, e As TreeViewCancelEventArgs) Handles MyTreeview.BeforeSelect
    If MyTreeview.SelectedNode IsNot Nothing Then 
        MyTreeview.SelectedNode.BackColor = Color.White
End Sub
于 2015-07-09T06:45:09.213 に答える