⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 在ListView中可以添加自定义控件的源码
💻 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 + -