6

環境

  • Windows XP x32 Visual Studio 2005 Standard Edition
  • Windows Mobile 2003(Pocket PC 2003)を実行しているHoneywell Dolphin9500バーコードスキャナーと白黒カメラが組み込まれています。ここにあるSDKを使用します。
  • .NET Compact Framework1.0SP3および.NETFramework1.1
  • VC#の使用

ゴール

CheckBoxes = trueフォーム上およびフォーム上にListViewコントロールがありView = Detailsますが、チェックボックスをユーザーが「チェック可能」にしたくありません。レコード完了の状態表示に使用しています。ただし、イベントハンドラー関数を使用して、コードを介してチェックボックスをオンにします(つまり、レコードの完了時:) lvMeters_ItemCheck(null, null);

問題

チェックボックス自体のチェックを無効にしました(このデバイスではタッチスクリーンは正確ではないと思います)。ただし、行を選択するとき(私は持っていますFullRowSelect = true)、コントロールはチェックボックスをチェックすることが多く、イベントハンドラーが呼び出されていないようです。

私が試したこと

私は基本的にイベントハンドラーのアクションを元に戻そうとしました:

private void lvMeters_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if (sender is ListView)
    {
        if (e.CurrentValue == CheckState.Checked)
            lvMeters.Items[e.Index].Checked = true;
        else
            lvMeters.Items[e.Index].Checked = false;
    }
    else if (e.CurrentValue == CheckState.Checked)
        lvMeters.Items[e.Index].Checked = false;
    else
        lvMeters.Items[e.Index].Checked = true;
}

問題は、上記のハンドラーがリストビューselectで呼び出されず、SelectedItemChangedイベントハンドラーがこのイベントハンドラーを呼び出さないことですが、selectのチェックボックスはオンのままです。ボックス自体をチェックすると呼び出されます。

追加情報が必要ですか?

遠ざけてください、そして私は最善を尽くします!

私は初心者です

ですから、私はこれを完全に間違って行っているので、全体を別の方法で行う必要があることをお気軽にお知らせください。

4

2 に答える 2

0

コンパクトフレームワークでのListViewの制限についてはよくわかりませんが、標準フレームワークでは、TreeNode.StateImageIndexプロパティを使用できます。チェックされていない/チェックされている状態は、実際には標準のWinFormsコードに埋め込まれた小さな画像を使用しています(私が正しく覚えていれば、それらはインデックス1と2です)。したがって、たとえば、これを行う場合:

private void lvMeters_ItemCheck(object sender, ItemCheckEventArgs e)
{
    e.Item.StateImageIndex = 3;
}

小さなアイコンが変更され、何も設定されません。ListViewImageListを使用することもできます。

于 2011-06-06T20:29:12.577 に答える
0

ため息...私はどういうわけか、デザイナーと混乱しているときに、コントロールからイベントハンドラーを削除することができました。ある時点でチェックしましたが、まだそこにありましたが、その時点で実際にロジック/コードの問題が発生しました。

あなたの答えをありがとう:/

于 2011-06-08T13:01:12.560 に答える