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