-1

チェス盤のようなダイナミックボードを作りました。クリックしたボタンの座標を取得する方法はありますか? 例: 最後のボタンをクリックすると、ラベル テキストは「列 5、行 5」になります。

ここに画像の説明を入力

4

2 に答える 2

0

dそれがint(およびグローバル)であると仮定します:

int tag=(Button)sender.Tag;
int row=tag/d;
int col=tag%d;

例として、5x5 グリッドの 19 番目のボタンには 18 のタグがあります (0 から開始)。次に、18/5 は 3 で、18%5 は 3 です。これは、行 3、列 3 になります (行と列の番号も 0 で開始すると仮定します。それ以外の場合は、それぞれに 1 を追加します)。これが意味をなさない場合、18 を 5 で割ると 3 余りが 3 に/なり%ます。

ボタンの行/列以外のデータを格納する必要がある場合は、カスタム クラスを使用してそれを Tag プロパティに割り当てることを検討してください。その後、クリックするだけで取得でき、すべての情報を準備できます。

于 2015-11-02T19:26:09.420 に答える
0

すべてのオブジェクトにタグを設定する場合は、単純な整数の代わりに適切なオブジェクトを使用してください。

たとえば、次を使用できますTuple<int, int>

btn.Tag = Tuple<int, int>.Create(row, column);

また

btn.Tag = new Point(row, column);

Tuple をサポートしていない古いバージョンの .Net フレームワークを使用している場合

チェス盤のすべてのボタンのクリックイベントで、送信者ボタンのタグ値を取得します

于 2015-11-02T19:20:49.950 に答える