チェックボックスを指定した行からのみ非表示にする必要があります。これは可能ですか?リストビューからチェックボックスを非表示にする方法
2
A
答えて
0
オーナー描画のListBoxを実装する必要があります。私はすべての項目のアイコンとチェックボックスを表示するものがありますが、簡単に変更して特定の項目のチェックボックスのみを表示することもできます。
public class IconizedCheckedListBox : ListBox
{
public IconizedCheckedListBox()
: base()
{
DrawMode = DrawMode.OwnerDrawVariable;
DoubleBuffered = true;
}
protected override void OnDrawItem(DrawItemEventArgs e)
{
Graphics g = e.Graphics;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
using (SolidBrush b = new SolidBrush(BackColor))
g.FillRectangle(b, e.Bounds);
//e.DrawBackground();
//e.DrawFocusRectangle();
if (e.Index < Items.Count && e.Index != -1)
{
IconizedCheckedListBoxItem item = (IconizedCheckedListBoxItem)Items[e.Index];
Rectangle checkBounds = e.Bounds;
checkBounds.X += kCheckboxPadding;
checkBounds.Y += (checkBounds.Height - kCheckboxSize)/2;
checkBounds.Width = kCheckboxSize;
checkBounds.Height = kCheckboxSize;
CheckBoxRenderer.DrawCheckBox(g, checkBounds.Location,
item.Checked?CheckBoxState.CheckedNormal:CheckBoxState.UncheckedNormal);
using (SolidBrush b = new SolidBrush(ForeColor))
{
StringFormat format = new StringFormat();
format.LineAlignment = StringAlignment.Center;
format.Alignment = StringAlignment.Near;
Rectangle textBounds = e.Bounds;
textBounds.X += item.Icon.Width + 2*kCheckboxPadding + kCheckboxSize;
textBounds.Y += 1;
textBounds.Width -= item.Icon.Width;
textBounds.Height -= 1;
Font f;
if (item.Checked)
f = new Font(Font, FontStyle.Bold);
else
f = Font;
g.DrawString(item.Data.ToString(), f, b, textBounds, format);
}
Image icon;
if (!item.Checked)
icon = Utilities.Utilities.WashOutImage(item.Icon);
else
icon = item.Icon;
g.DrawImage(icon, e.Bounds.X + 2 * kCheckboxPadding + kCheckboxSize, e.Bounds.Y);
}
}
protected override void OnMeasureItem(MeasureItemEventArgs e)
{
e.ItemHeight = kItemHeight;
}
protected override void OnMouseClick(MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
int idx = IndexFromPoint(e.Location);
if (idx != -1)
{
IconizedCheckedListBoxItem item = (IconizedCheckedListBoxItem)Items[idx];
item.Checked = !item.Checked;
if (ItemCheck != null)
{
ItemCheckEventArgs args = new ItemCheckEventArgs(
idx,
item.Checked ? CheckState.Checked : CheckState.Unchecked,
CheckState.Indeterminate);
ItemCheck(this, args);
}
Invalidate();
}
}
base.OnMouseClick(e);
}
/// <summary>
/// This is called AFTER the check state has been updated
/// </summary>
public event ItemCheckEventHandler ItemCheck;
private const int kItemHeight = 32;
private const int kCheckboxSize = 13;
private const int kCheckboxPadding = 4;
}
public class IconizedCheckedListBoxItem
{
public IconizedCheckedListBoxItem(Image inIcon, object inData)
{
Icon = inIcon;
Data = inData;
Checked = false;
}
public override string ToString()
{
return Data.ToString();
}
public Image Icon;
public object Data;
public bool Checked;
}
1
関連する問題
- 1. リストビューの項目を表示/非表示にする方法
- 2. リストビューで非表示のチェックボックスを表示するように設定する
- 3. リストビューを表示/非表示
- 4. チェックボックスをオンにするチェックボックスを表示/非表示
- 5. JSツリーライブラリのチェックボックスを非表示にする方法
- 6. リストビューでツールバーを非表示にする
- 7. チェックボックスを使用してカラムを動的に表示/非表示する方法
- 8. mainactivityからボタンをクリックすると、リストビュー内のすべてのチェックボックスが非表示状態にならない
- 9. チェックボックスを非表示または非表示にするJavaScript
- 10. Pテーブルのヘッダーからチェックボックスを非表示/削除する方法
- 11. リストビューから選択したアイテムを次のリストビューに表示する方法
- 12. チェックボックスからdivのセットを非表示にする
- 13. 編集ページのチェックボックスから値に応じてフィールドを非表示および表示する方法
- 14. チェックボックスを表示して非表示にするチェックボックスをオフにする
- 15. CSSでチェックボックスを非表示にする
- 16. チェックボックスを非表示にする
- 17. テーブルから列を非表示/表示する方法は?
- 18. NSMatrixからNSCellオブジェクトを非表示/表示する方法
- 19. チェックボックスの非表示フィールド値を変更する方法
- 20. データベースからのデータをリストビューで表示する方法は?
- 21. ExtJS:チェックボックスのチェックボックスの表示/非表示を切り替える
- 22. apex5.0のチェックボックスを表示/非表示
- 23. jqueryチェックボックスでコードを表示/非表示
- 24. 複数のチェックボックスを使用してダイアログボックスでリストビューを表示する方法
- 25. リストビューでセレクタを表示する方法
- 26. リストビューでデータベースを表示する方法
- 27. jQueryを使用してチェックボックスを表示/非表示にする
- 28. リストビューを表示/非表示にします。要求時にSectionIndex
- 29. ブートストラップデータテーブルの列を非表示/非表示にする方法は?
- 30. C#でプロセスを非表示/非表示にする方法は?
OPは "ListBox"ではなく "ListView"を要求しました。これは有効な答えではありません。 – Nick