这两个都是C#窗体的基础内容,下面用一个简单的例子说明这个问题,注意ListBox不是ListView就好。
如下图:
有两个按钮可以调节窗体的透明度,而在上方,如果ListBox的项被选中,则会呈现在文本框之中,可供修改,没有选中ListBox的项,或者选中之后,点击ListBox的空白处,则是为ListBox添加项的状态,同时可以删除相应的项。并且无论是在添加还是在删除状态,都是要求ListBox中项不能相等。
ListBox的具体布局如下图:
请自行利用对其工具排放好。同时为ListBox1添加一个listBox1_MouseClick事件,用于点击ListBox1的空白之处清空选择。因为这个组件如果你选择一项话,你不自己写一个事件,它会永远选中这一项,除非你选择别的项。换句话说,自从你选中其中一项之后,它会永远选中一项。
Form1的代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace DataGridView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.StartPosition = FormStartPosition.CenterScreen;//设置Form窗体初始化放在屏幕中间
}
//选中一项话,自动改变按钮1的文本,同时将选中的项放到textBox1
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedItems.Count > 0)
{
textBox1.Text = listBox1.SelectedItems[0] + "";
button1.Text = "修改";
}
}
//点击ListBox1的空白之处清空选择
private void listBox1_MouseClick(object sender, MouseEventArgs e)
{
if (listBox1.IndexFromPoint(e.X, e.Y) == -1)
{
listBox1.ClearSelected();
button1.Text = "添加";
}
}
//添加与修改按钮
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Length > 0)
{
if (textBox1.Text.Length < 9)//只接受文本长度在0-9之间的输入
{
Boolean isExisted = false;//遍历ListBox,查找是否有与当前输入相同的项
for (int i = 0; i < listBox1.Items.Count; i++)
{
if ((textBox1.Text.ToString()).Equals(listBox1.Items[i].ToString()))
{
isExisted = true;
break;
}
}
if (!isExisted)//如果没有
{
if (button1.Text == "添加")
{
listBox1.Items.Add(textBox1.Text);//为ListBox添加一项
textBox1.Text = "";
}
else
{
listBox1.Items[listBox1.SelectedIndex] = textBox1.Text;//修改ListBox选中的项
textBox1.Text = "";
listBox1.ClearSelected();
button1.Text = "添加";
}//注意添加与修改之后,皆要初始化
}
else
{
MessageBox.Show("已存在相应的项,无法添加!", this.Text);
}
}
else
{
MessageBox.Show("不得大于等于9个字!", this.Text);
}
}
else
{
MessageBox.Show("不能为空!", this.Text);
}
}
//删除ListBox的选中项
private void button2_Click(object sender, EventArgs e)
{
if (listBox1.SelectedItems.Count > 0)//删除之前记得判断是否有选中项
{
listBox1.Items.Remove(listBox1.SelectedItems[0]);
listBox1.ClearSelected();
textBox1.Text = "";
button1.Text = "添加";
}
}
//窗体透明度的调整
private void button3_Click(object sender, EventArgs e)
{
if (this.Opacity > 0.2)//防止用户调成0,再也看不到窗体了
{
this.Opacity -= 0.1;
label1.Text = "透明度:" + this.Opacity * 100 + "%";//将透明度换成百分比
}
}
private void button4_Click(object sender, EventArgs e)
{
if (this.Opacity < 1)
{
this.Opacity += 0.1;
label1.Text = "透明度:" + this.Opacity * 100 + "%";
}
}
}
}