0

devexpress TreeList コントロールを使用しています。Treelist で、列の 1 つが読み取り専用になっている状況があります。この列には、別のセルで何かが発生したときにテキスト値が追加される場合があります。このようなプロパティを設定して、セルへのユーザー入力を制限しました

    treeList1.Columns["col3"].OptionsColumn.ReadOnly = true;

一部のセルからテキスト値を削除したいのですが、読み取り専用であるため、削除ボタンは機能しません。ユーザーがテキストを削除できるようにするイベント/メソッドとコードを提案できますか? どんな助けでも大歓迎です。

4

1 に答える 1

0

編集されたソリューション:

カーソルがセル内 (編集モード) にあるときにボタンを押すと、イベントのTreeList送信者ではなく、 . したがって、 のイベントも処理する必要があります。KeyDownRepositoryItemButtonEditRepositoryItemButtonEdit

コードが重複しないようにonKeyDown、送信者を確認するハンドラ ' ' を 1 つ作成しました。

treeList1.KeyDown += onKeyDown;
riButtonEdit.KeyDown += onKeyDown;

KeyDownの両方のイベントを処理し、セルの値を に設定する方法を示すコード例を次に示します。treeListrepositoryButtonEditnull

private void onKeyDown(object sender, KeyEventArgs e)
{
    // Test if the button pressed is the delete button
    if (e.KeyCode != Keys.Delete)
        return;

    // Test if the focused column is colValue
    if (treeList1.FocusedColumn != colValue)
        return;

    // Set the cell value to null
    treeList1.FocusedNode.SetValue(colValue, null);

    // If it's the ButtonEdit who send the event, make it's EditValue null
    var btnEdit = sender as ButtonEdit;
    if (btnEdit != null)
    {
        btnEdit.EditValue = null;
    }
}
于 2014-01-30T13:04:38.863 に答える