我正在使用.NET编写一个windforms应用程序(实际上是IronPython,但这不相关),我的GUI中有一个CheckedListBox对象。
它工作正常,它在多列布局中有大约20个项目。但我无法弄清楚如何给这个东西一个很好的内部边距 - 我想在复选框的顶部,底部,左边和右边插入大约20或30像素的空白。
要清楚,我希望空格在 CheckedListBox的边框和其中的复选框之间出现,而不是在整个组件之外。
希望这是一个简单的答案,我只是错过了它,因为我刚接触Windows编程。如果它不可能,我想这也很好,所以我不再浪费时间了。
(如果我在Swing(Java)中这样做,我会想要在我的组件上设置Insets,或者可能在其中构建一个带有一些空白空间的复合边框。)
答案 0 :(得分:0)
本机Window控件不支持Padding属性,否则无法说服它。不是一个真正的问题。只需将BorderStyle设置为None,并将其放在AutoScroll属性为True的Panel中。您必须在表单的Load事件中设置列表框大小,因为它可能会重新调整。哎呀,看起来不对劲。哦,好吧。
答案 1 :(得分:0)
对于任何希望在复选框周围添加空间的人来说,最简单的方法是使用DataGridView并使其看起来像CheckedListBox。以下是我的一些设计师代码:
//
// dgv1
//
this.dgv1.AllowUserToAddRows = false;
this.dgv1.AllowUserToDeleteRows = false;
this.dgv1.AllowUserToResizeColumns = false;
this.dgv1.AllowUserToResizeRows = false;
this.dgv1.BackgroundColor = System.Drawing.SystemColors.Control;
this.dgv1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.dgv1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
this.dgv1.ColumnHeadersVisible = false;
this.dgv1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.dgvcChecked,
this.dgvcValue});
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgv1.DefaultCellStyle = dataGridViewCellStyle3;
this.dgv1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgv1.EnableHeadersVisualStyles = false;
this.dgv1.Location = new System.Drawing.Point(7, 21);
this.dgv1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.dgv1.Name = "dgv1";
this.dgv1.ReadOnly = true;
this.dgv1.RowHeadersVisible = false;
this.dgv1.RowTemplate.Height = 18;
this.dgv1.RowTemplate.ReadOnly = true;
this.dgv1.ShowCellErrors = false;
this.dgv1.ShowCellToolTips = false;
this.dgv1.ShowEditingIcon = false;
this.dgv1.ShowRowErrors = false;
获取或设置Checked项目:
// gets or sets the checked items in dgv1 ( dgvcChecked.Index = 0, dgvcValue.Index = 1 )
public string[] pSelected {
get { return ( from DataGridViewRow r in dgv1.Rows
where r.Cells[dgvcChecked.Index].Value.Equals(true)
select r.Cells[dgvcValue.Index].Value as string ).ToArray();
}
set {
if (value != null && value.Length > 0)
foreach (DataGridViewRow r in dgv1.Rows)
r.Cells[dgvcChecked.Index].Value = value.Contains(r.Cells[dgvcValue.Index].Value as string);
}
}