1、checkBox 复选框 属性 checkBox.Checked = true;
2、RadioButton 单选框 具有两个状态: true 或 false。RadioButton 是否已选择取决于其 Checked 属性的状态。在一个板块中的单选钮,只能选中一个
3、listbox 列表框 ,列表,所以只能一行一行的加入 滚动条 添加到列表框中,listBox.Items.Add(ans);
(1)跨线程添加 AddRemind(ans);
private void AddRemind(string value)
{
if (this.InvokeRequired)
{
AddRemindDelegate d = new AddRemindDelegate(AddRemind);
this.Invoke(d, value);
}
else
{
listBox_remind.Items.Add(value);
listBox_remind.SelectedIndex = listBox_remind.Items.Count - 1;
listBox_remind.ClearSelected();
}
}
(2)在listbox中的改变一行的字体颜色 和 显示 水平滚动条时,出现的问题
改变一行的字体颜色 ,首先这个属性设置为 ,然后再加增加一个事件进行每一行的绘制
private void listBox_TestInfo_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index >= 0)
{
e.DrawBackground();
Brush mybsh = Brushes.Black;
string LineStr = listBox_TestInfo.Items[e.Index].ToString();
// 判断是什么类型的标签
if (LineStr.Contains("Fail")&&LineStr.Contains("==>>"))
{
mybsh = Brushes.Red;
}
// 焦点框
e.DrawFocusRectangle();
//文本
e.Graphics.DrawString(listBox_TestInfo.Items[e.Index].ToString(), e.Font, mybsh, e.Bounds, StringFormat.GenericDefault);
//listBox_TestInfo.HorizontalExtent = 1500;
this.listBox_TestInfo.HorizontalExtent = Math.Max(this.listBox_TestInfo.HorizontalExtent, (int)this.listBox_TestInfo.CreateGraphics().MeasureString(LineStr.Replace('\n', '\r'), this.listBox_TestInfo.Font).Width + 10);
}
}
其实在 绘制完字体颜色后,我遇到了一个问题,就是listbox中的水平滚动条的没有了,而且listbox内容也显示不全,我上网查了一些说明,原来是 listbox 这个属性的问题 HorizontalExtent (获取或设置水平滚动条的宽度),原来在绘制时,这个值发生了变化,从而导致滚动条没有出现,我们应该动态的设置这个值,就如,上面代码中最后一行的描述一样。
4、textBox 文本框,注意:若在里面加换行,则是“\r\n”, 多行设置
在其中添加内容 textBox.Text = ans;
5、ListView 列表视图
this.listView_ShowRecordInfo.Clear(); // 把列表视图中的所有都清空 this.listView_ShowRecordInfo.Items.Clear(); //只移除所有的项(除一列一列的表头不请空,其他的都清空)。 this.listView_ShowRecordInfo.Columns.Add("文件名", 250, HorizontalAlignment.Center); // 添加列表头 第一列标题为"文件名",属性为 宽度为250,对齐方式为HorizontalAlignment.Center 居中
this.listView_ShowRecordInfo.FullRowSelect = true; 选中一行所有子项突出来 this.listView_ShowRecordInfo.GridLines = true; 显示网格 this.listView_ShowRecordInfo.AllowColumnReorder = true; // 是否拖动列表头来改变列的顺序 this.listView_ShowRecordInfo.Sorting = SortOrder.Ascending; // 按照递增顺序排序 在列表中添加一行
ListViewItem item = new ListViewItem(record.testResultFile); // 新建一行,这一个的第一列原始为record.testResultFile
item.SubItems.Add(record.testResult);
item.SubItems.Add(record.dateTime);
item.SubItems.Add(record.tester);
item.SubItems.Add(record.version);
item.SubItems.Add(record.type);
item.SubItems.Add(record.qrcode);
item.SubItems.Add(record.barcode);
item.BackColor = record.testResult == "Pass" ? Color.Green : Color.Red; // 当前列的背景颜色
this.listView_ShowRecordInfo.Items.Add(item);
遍历所有行,把该行的复选框选中;
foreach (ListViewItem item in listView_ShowRecordInfo.Items)
{
item.Checked = checkBox_CheckAll.Checked;
}
当选中一行时的事件 为 ItemSelectionChanged
6、时间日期控件 dateTimePicker
外观: 需要设置几个属性确定日期用标准格式显示用户自定义时间日期格式 获取当前日期 :DateTime StarDateTime = DateTime.Parse(dateTimePicker_Start.Text);
7 tabControl 选项卡
(1) MaxMode = tabControl.SelectedIndex; 获取选择项的下标。
(2)
8 comboBox 下拉框
(1) workModeSet = comboBox.SelectedIndex; 获取当前下拉框的下标 若0,1,2.. 第0项...。
(2)comboBox.Items.Add("意外移动"); 下拉框中添加 ''意外移动" 这一项。
(3)comboBox_SelPermiss.SelectedIndex = comboBox_SelPermiss.Items.IndexOf("添加用户"); 默认选中“添加用户”选项
9 label 控件
(1)确认可见边框
(2)若想改变label控件大小 必须要把AutoSize属性改为false
(3)name 就是 label 控件的名字 text 为 label控件要显示的内容
(4) 文本出现的位置。
(5)label_result.BackColor = Color.Green; label的背景颜色
10 tableLayoutPanel 先设置几行几列。处理其他组件布局 以表的形式排列。分成多个模块,每个模块中可以放入panel,每个模块还可以继续嵌套tableLayoutPanel
11 treeView 以树的形式显示,树上都有节点
treeView_Account.Nodes.Clear(); 清空树上所有节点 在树上添加节点
foreach (UserStruct user in Manager.Instance.Accounts.UserList)
{
TreeNode node = new TreeNode();
node.Text = user.Name; // 列表名称。
node.Tag = user; // 对象。
treeView_Account.Nodes.Add(node);
}
选中节点激发事件 treeView_Account_NodeMouseClick 和 遍历 groupBox 中的 控件;
private void treeView_Account_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) //单击treeview中的鼠标节点时触发的事件
{
UserStruct user = (UserStruct)(e.Node.Tag); // 选中节点中的对象;
textBox_UserName.Text = user.Name;
string ss = UniversalTools.DESEncrypt.Instance.DES_Decrypt(user.PWD);
textBox_Possword.Text = ss.Remove(0, user.Name.Length);
foreach (Control c1 in this.groupBox_Permiss.Controls)
((CheckBox)c1).Checked = false;
// 把选中用户的权限也赋予到对应的checkBox中
for (int i = 0; i < user.ModuleList.Count; i++) //
{
foreach(Control c1 in this.groupBox_Permiss.Controls)
{
if(((CheckBox)c1).Name.Remove(0,9) == user.ModuleList[i].name)
{
((CheckBox)c1).Checked = true;
break;
}
}
}
}
treeView 功能强大,一般和数据库连用 可参考:https://blog.csdn.net/imxiangzi/article/details/81200517
12 splitContainer 控件 这个控件分割成两部分,两部分可以大小移动。
13 RichTextBox 多格式文本框,比textbox 更高级的功能。
跨线程添加,改变字体颜色 ,如下:
private void AddTestInfo(string value,bool flag)
{
if (this.InvokeRequired)
{
AddRemindDelegate d = new AddRemindDelegate(AddTestInfo);
this.Invoke(d, value,flag);
}
else
{
AppendTextColorful(richTextBox_TestInfo, value, flag ? Color.Black : Color.Red);
}
}
private void AppendTextColorful(RichTextBox rtBox, string text, Color color, bool addNewLine = true)
{
if(text.Contains("\r"))
{
text.Trim('\r');
}
if (text.Contains("\n"))
{
text.Trim('\n');
}
//if (text.Trim().Length == 0) return;
if (addNewLine)
{
text += Environment.NewLine;
}
rtBox.SelectionStart = rtBox.TextLength;
rtBox.SelectionLength = 0;
rtBox.SelectionColor = color;
rtBox.AppendText(text);
rtBox.SelectionColor = rtBox.ForeColor;
rtBox.AppendText(Environment.NewLine);
}