📄 form1.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace NumListView
{
public partial class Form1 : Form
{
private ListViewItem lvItem;
public Form1()
{
InitializeComponent();
}
private void myListView1_MouseUp(object sender, MouseEventArgs e)
{
// 取得列中被按下的项目。
lvItem = this.myListView1.GetItemAt(e.X, e.Y);
// 确认确实有一个项目被按下。
if (lvItem != null)
{
// 取得被按下之项目的周框。
Rectangle ClickedItem = lvItem.Bounds;
// 检查此资料行是否已经完全被卷动至左侧之外。
if ((ClickedItem.Left + this.myListView1.Columns[0].Width) < 0)
{
// 如果储存格在左侧之外无法看到则不做任何处理。
return;
}
// 检查此资料行是否部分被卷动至左侧之外。
else if (ClickedItem.Left < 0)
{
// 确认此数据行是否已延伸至 ListView 的右侧之外。
if ((ClickedItem.Left + this.myListView1.Columns[0].Width) > this.myListView1.Width)
{
// 将数据行的宽度设定成与 ListView 的宽度。
ClickedItem.Width = this.myListView1.Width;
ClickedItem.X = 0;
}
else
{
// 储存格的右侧位于检视中。
ClickedItem.Width = this.myListView1.Columns[0].Width + ClickedItem.Left;
ClickedItem.X = 2;
}
}
else if (this.myListView1.Columns[0].Width > this.myListView1.Width)
{
ClickedItem.Width = this.myListView1.Width;
}
else
{
ClickedItem.Width = this.myListView1.Columns[0].Width;
ClickedItem.X = 2;
}
ClickedItem.Y += this.myListView1.Top;
ClickedItem.X += this.myListView1.Left;
// 将计算后的周框指派给 numericUpDown。
this.numericUpDown1.Bounds = ClickedItem;
// 设定 numericUpDown 的预设文字使其与被按下的项目相符合。
this.numericUpDown1.Text = lvItem.Text;
// 显示出 numericUpDown,并确保它位于最顶层且拥有焦点。
this.numericUpDown1.Visible = true;
this.numericUpDown1.BringToFront();
this.numericUpDown1.Focus();
}
}
private void numericUpDown1_Leave(object sender, EventArgs e)
{
// 设定 ListView 项目的文字使其符合 numericUpDown。
lvItem.Text = this.numericUpDown1.Value.ToString();
// 将 numericUpDown 隐藏起来。
this.numericUpDown1.Visible = false;
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
// 设定 ListView 项目的文字使其符合 numericUpDown。
lvItem.Text = this.numericUpDown1.Value.ToString();
// 将 numericUpDown 隐藏起来。
this.numericUpDown1.Visible = false;
}
private void numericUpDown1_KeyPress(object sender, KeyPressEventArgs e)
{
// 确认使用者按下 ESC 键。
if (e.KeyChar == (char)(Keys.Escape))
{
// 重设原始文字值并将 numericUpDown 隐藏起来。
this.numericUpDown1.Value =Convert.ToDecimal( lvItem.Text);
this.numericUpDown1.Visible = false;
}
// 确认使用者按下 ENTER 键。
else if (e.KeyChar == (char)(Keys.Enter))
{
// 将 ComboBox 隐藏起来。
this.numericUpDown1.Visible = false;
}
}
private void Form1_Load(object sender, EventArgs e)
{
// 将 ListView 控件设定成详细数据检视。
this.myListView1.View = View.Details;
// 设定当按一下项目便选取项目和它的所有子项目。
this.myListView1.FullRowSelect = true;
ColumnHeader columnheader;
ListViewItem lviewitem;
// 新增一些数据至 ListView 控件中。
lviewitem = new ListViewItem("10");
lviewitem.SubItems.Add("硬盘");
this.myListView1.Items.Add(lviewitem);
lviewitem = new ListViewItem("8");
lviewitem.SubItems.Add("内存");
this.myListView1.Items.Add(lviewitem);
lviewitem = new ListViewItem("25");
lviewitem.SubItems.Add("CPU");
this.myListView1.Items.Add(lviewitem);
// 建立数据行行首。
columnheader = new ColumnHeader();
columnheader.Text = "数量";
columnheader.Width = 140;
this.myListView1.Columns.Add(columnheader);
columnheader = new ColumnHeader();
columnheader.Text = "名称";
columnheader.Width = 300;
this.myListView1.Columns.Add(columnheader);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -