こんにちはプログラマ、 チェックボックスとラベルを同じセルに追加する必要があります。これを行う方法はわかります。私はdatagridviewcolumnをcheckboxにすることができますが、チェックボックスだけを表示し、ラベルを表示する場所は表示しません。誰もこの悪夢から私を目覚めさせることができますか? ありがとうございます。DataGridviewの同じセルにチェックボックスとラベルを追加するには?
答えて
これは、デフォルトのチェックボックスセルでは可能ではないと思います。
ここでは、チェックボックス列をサブクラス化し、ラベルを描画するためのカスタムペイントを実行する実装を示します。ラベルテキストのバインディングを提供する(現在、ラベルテキストを直接設定する必要があります)など、さまざまな方法でこれを拡張することができます。私のコードはthis forum postから大きく借りています。ここで
using System;
using System.Windows.Forms;
using System.Drawing;
public class MyDGVCheckBoxColumn : DataGridViewCheckBoxColumn
{
private string label;
public string Label
{
get
{
return label;
}
set
{
label = value;
}
}
public override DataGridViewCell CellTemplate
{
get
{
return new MyDGVCheckBoxCell();
}
}
}
public class MyDGVCheckBoxCell : DataGridViewCheckBoxCell
{
private string label;
public string Label
{
get
{
return label;
}
set
{
label = value;
}
}
protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
{
// the base Paint implementation paints the check box
base.Paint(graphics, clipBounds, cellBounds, rowIndex, elementState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);
// Get the check box bounds: they are the content bounds
Rectangle contentBounds = this.GetContentBounds(rowIndex);
// Compute the location where we want to paint the string.
Point stringLocation = new Point();
// Compute the Y.
// NOTE: the current logic does not take into account padding.
stringLocation.Y = cellBounds.Y + 2;
// Compute the X.
// Content bounds are computed relative to the cell bounds
// - not relative to the DataGridView control.
stringLocation.X = cellBounds.X + contentBounds.Right + 2;
// Paint the string.
if (this.Label == null)
{
MyDGVCheckBoxColumn col = (MyDGVCheckBoxColumn)this.OwningColumn;
this.label = col.Label;
}
graphics.DrawString(
this.Label, Control.DefaultFont, System.Drawing.Brushes.Red, stringLocation);
}
}
は、使用方法を示すコードです:
private void Form1_Load(object sender, EventArgs e)
{
MyDGVCheckBoxColumn col = new MyDGVCheckBoxColumn();
col.Label = "hippo";
col.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
this.dataGridView1.Columns.Add(col);
this.dataGridView1.RowCount = 5;
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
if (row.Index % 2 == 0)
{
((MyDGVCheckBoxCell)row.Cells[0]).Label = "kitten";
}
}
}
お世話になりました。私の時間を節約します。 –
質問したいのは、DataGridViewCheckBoxのcheckStateを変更してイベントを作成する方法です。 –
@PrakashKunwarこのためにcelldirtystatechangedイベントを使用することができます(これ以外の方法もありますが、これがベストとなることがよくあります)。この質問を見てくださいhttp://stackoverflow.com/questions/6468263/datagridviewcheckboxcolumn-how-to-update -bound-datasource-on-property-i-6469559#6469559 –
- 1. DataGridViewセルにラベル(1つではない)を追加する方法
- 2. 同じセルに複数の行を追加するには -
- 3. イメージとテキストを同じセルに追加する方法pdfbox?
- 4. ブートストラップのチェックボックスと同じ行のラベル
- 5. ラジオボタンとチェックボックスに同じイベントハンドラを追加します
- 6. yAxisに同じ精度を追加するHighChartsのラベル
- 7. C#では、IntellisenseをDataGridViewセルに追加する方法は?
- 8. チェックボックスにラベルを追加/スイッチ角2
- 9. ウィンドウフォームのDataGridViewにチェックボックス列を追加する手助け
- 10. アンドロイドの同じリストビューにチェックボックスとラジオボタンの両方を追加するコード?
- 11. 同じindexPathに2つのセルを追加しますか?
- 12. DataGridViewのセルを編集するときにDateTimepickerを追加する方法
- 13. Datagridviewのヘッダーセルにチェックボックスを追加します。
- 14. DataGridViewにデータを追加するユーザーの入力に応じて
- 15. チェックボックスとラベルが同じ行に表示されない
- 16. 同じ値のエラーがある場合、DataGridViewセルをマージする
- 17. チェックボックスのラベルから値を追加
- 18. 同じカテゴリに対応するセルに値を追加するマクロ
- 19. 同じAVCaptureSessionにAVVideoDataOutputとAVStillImageOutputを追加するには?
- 20. UITableViewセルでラベルとイメージビューの数を追加する方法
- 21. Erlangを同じリストに追加する
- 22. djangoでプレースホルダとフォームフィールドのラベルを同時に追加するには?
- 23. ラベルにデータを追加するには
- 24. ラベルにマーキーを追加するには
- 25. hybirsにチェックボックスを追加するには
- 26. slickgridにチェックボックスを追加するには?
- 27. Visual StudioコミュニティとプロジェクトにDataGridViewコンポーネントを追加するには
- 28. 異なる形式のdataGridViewセルにテキストを追加する方法C#
- 29. datagridview内の特定のセルに行の注釈を追加する
- 30. ビューを回転すると、動的に追加されたチェックボックスのテキストが同じになる
あなたはテンプレート列を使用することができます。両方のコントロールを入れてください。 –
私はwinformsでこれが必要です。それはそこで利用可能ですか? –