次の図のように、MsExcelの「依存セル」に似た機能をDataGridViewに実装したいと考えています。 ベストは、宛先と依存するdatagridviewcellアドレスをパラメータとし、datagridview上に矢印を描く、ある種のペイント機能です。 どのようにすればいいですか?関数ペイント "依存セル"のデータグリッドビュー
3
A
答えて
4
あなたは、描画を行うためにPaint
イベントを使用することができます。
のは、あなたがList<T>
に接続するために、細胞を収集していると仮定しましょう:
List<Tuple<DataGridViewCell, DataGridViewCell>> DgvCells =
new List<Tuple<DataGridViewCell, DataGridViewCell>>();
今、あなたは多分このように、描画を行うためにDGVのPaint
イベントをコーディングすることができます:それは使用しています
private void dataGridView1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
foreach(var t in DgvCells)
{
if (!(t.Item1.Displayed && t.Item2.Displayed)) continue;
Point p1 = GetCenter(dataGridView1.GetCellDisplayRectangle(
t.Item1.ColumnIndex, t.Item1.RowIndex, true));
Point p2 = GetCenter(dataGridView1.GetCellDisplayRectangle(
t.Item2.ColumnIndex, t.Item2.RowIndex, true));
using (Pen pen = new Pen(Color.Blue, 1)
{ EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor })
e.Graphics.DrawLine(pen, p1, p2);
}
}
小さなヘルパー関数:
Point GetCenter(Rectangle r)
{ return new Point(r.X + r.Width/2, r.Y + r.Height/2); }
私はcリストに追加するCellMouseClickイベントのode。結果は次のようになります。
あなたがDGV
たびにInvalidate()
を呼び出す必要が
いつものように... StartCap
または異なる色などを使用しての追加など、描画のスタイルを、コードを追加することができます接続するセルのリストから要素を追加または削除します。
これは単なる最小の例です。さまざまなエラーを捕らえるためのコードを追加したり、セルの1つが表示されていないときに何をするかを決めることができます。 (私は単に線を隠すだけです)
srcollingあなたはDGVもInvalidate
にする必要があります!
+1
これは完璧です、ありがとう@TaW。 – mdziadowiec
関連する問題
- 1. 依存関係メイン関数
- 2. ビットマップイメージをデータグリッドビューのセルにリサイズ
- 3. 依存関係の依存関係
- 4. 依存関係のプロパティ依存関係
- 5. SQL関数の依存関係
- 6. make:依存関係のテキスト関数
- 7. mysqlの関数依存関係
- 8. Aws Lambda:Pandas依存関係のPython関数
- 9. Makefile依存関係変数
- 10. Mavenの依存関係と複数のプロジェクトの依存関係の管理
- 11. jestモック依存関係生成関数
- 12. 複数のJavaプロジェクトの依存関係
- 13. Springとの複数の依存関係
- 14. MVC複数の依存関係
- 15. Xcodeのネイティブ複数プロジェクト依存関係
- 16. 複数の循環依存関係C++
- 17. 関数型プログラミングの依存性注入
- 18. 複数OSのjnetpcap依存関係
- 19. タスクが複数の依存関係
- 20. Cでのデータグリッドビューのセル分割#
- 21. 依存関係
- 22. 依存関係
- 23. 初回コンパイル時の依存関係の依存関係
- 24. 異なるスコープの依存関係内のMaven依存関係
- 25. Gradle依存関係とGradle依存関係のEclipseの違い
- 26. 依存関係の依存関係の使用
- 27. プレイブックの依存関係と役割の依存関係
- 28. Mavenの依存関係ツリーとPOMの依存関係
- 29. Excelの行/列と数値は別のセルに依存
- 30. ローカル依存関係の間接依存関係
DevExpressのようなサードパーティライブラリを使用します。 –
アドバイスをありがとう@UweKeimしかしDevExpressのライセンスは900 $と似ていますので、残念ながらそれは本当に私の選択肢ではありません。 – mdziadowiec