0

画像ボックスをボタンとして使用するのに問題があります。昔ながらのウィンドウフォームのボタンコントロールを使用するのではなく、カスタムのボタングラフィックを使用したいのですが。

1つのボタンをすばやく押すとボタンが遅れるように見えることを除けば、かなりうまく機能します。ピクチャーボックスがクリックされるたびにすぐにOnClickメソッドが呼び出されるようにしたいのですが、ダブルクリックイベントを使用していないのに、そのイベントを登録しているようです。

短いバージョンは私がしたいです:

  • (理想的)ダブルクリックイベントを無効にします。これは、画像ボックスが交互にクリックされるたびにコントロールが待機しているように見えるため、使用することはありません。または、
  • (許容)ボタンとして使用する予定のすべてのピクチャーボックスに使用できる一般的なDoubleClickイベントを記述します。

私は、これが実際に起こっていることであることを示すテストプログラムを作成しました。カウンターを1つ増やすMouseUpイベントを作成し、別のカウンターを1つ増やすOnClickも追加しました。これらのイベントにリンクされているPicture Boxをすばやくクリックすると、MouseUpカウンターはOnClickカウンターの2倍になります。

次に、OnClickイベントを呼び出すDoubleClickイベントを追加しました。これは理想的ではありませんが、問題を完全に解決します。すべてのボタンで使用できる一般的なDoubleClickイベントを作成する方法があれば、これは許容できると思います。

今のところ、私のDoubleClickイベントは

    private void pb_DoubleClick(object sender, EventArgs e)
    {
        pbOK_Click(sender, e);  //This needs to be generic
    }

少なくともDoubleClickの行を次のようなものに置き換えたい

    private void pb_DoubleClick(object sender, EventArgs e)
    {
        (Sender.ToString)_Click(sender, e); // Doesn't work quite like this.
    }

ピクチャーボックスごとに特別なDoubleClickイベントを個別に作成することもできますが、それは理想からはほど遠いものであり、非常に面倒なように思われるため、必要がない場合は作成しないことをお勧めします。

これは私の最初の投稿された質問ですので、これを読むのに時間を割いてくれた人に感謝します。アドバイスをいただければ幸いです。

編集:このプログラムはWindows CE用に開発されているため、オブジェクトのプロパティとイベントオプションはかなり制限されています。私はまだ何かが足りないかもしれませんが、ボタンのプロパティリストがGenerateMemberからLocationに直接移動し、使用可能な画像オプションがないことがわかります。元の投稿にターゲットプラットフォームが記載されていないことをお詫び申し上げます。

4

3 に答える 3

1

これは、次のようにControl.SetStyle()メソッドを使用して実行されます。

using System;
using System.Windows.Forms;

class MyButton : PictureBox {
    public MyButton() {
        this.SetStyle(ControlStyles.StandardDoubleClick, false);
    }
}
于 2012-05-04T20:02:16.660 に答える
0

さて、私の最初の答えはゴミでした。私の更新:

コントロールを取得する方法に関するリンクは次のとおりです。メソッド名: リンク

リンクにはコントロールcがあります。コントロール(送信者)を取得するには、次を使用します。

PictureBox picbox = (PictureBox) sender;

次に、文字列(your class.Method.Name)を使用してメソッドを呼び出します。リンク

これでうまくいくはずです。そうだといいのですが。

于 2012-05-04T02:46:13.370 に答える
0

独自のコントロールを作成してみませんか?このように、あなたはあなたが望む振る舞いを得るために何もする必要はありません。

using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public class ButtonPictureBox : PictureBox
    {
        protected override void OnDoubleClick(System.EventArgs e)
        {
            OnClick(e);
        }
    }
}

ただし、これがWindowsCEで可能かどうかはわかりません。

DoubleClickフォームデザイナでイベントも非表示にする場合は、これをクラスに追加できます。

        [Browsable(false)]
        public new event EventHandler DoubleClick;
于 2012-05-04T15:38:33.673 に答える