QQ25294717 发表于 2022-1-7 10:37:13

如何获取MouseClick listItem?

如何获得鼠标点击列表项目?namespace PaletteMenu。
{。
公共类 MyCommands。
{。
//。
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;。
私有控制[] 控制 = 新控制;。
private ListView[] listview = new ListView;。
//。

public void AddMyPaletteSet()。
{。
var myPaletteSet = new PaletteSet(“Menu”);。
for (int i = 0; i 。
{。
control = new Control(“Group” + i);。
myPaletteSet.Add(“Group” + i, control);。
listview = new ListView();。
列表视图.Dock =DockStyle.Fill;。
列表视图.视图 =视图列表;。
列表视图.BackColor = SystemColors.Control;。
控制.Controls.Add(listview);。
列表视图.BeginUpdate();。
for (int ii = 0; ii 。
{。
ListViewItem lvi = new ListViewItem();。
lvi.ImageIndex = ii;。
lvi.Text = “Button” + ii;。
列表视图.Items.Add(lvi);。
}。
列表视图.EndUpdate();。
列表视图.MouseClick += new MouseEventHandler(MyCommands_MouseClick);。
列表视图.MouseEnter += new EventHandler(MyCommands_MouseEnter);。
列表视图.MouseLeave += new EventHandler(MyCommands_MouseLeave);。
}。

myPaletteSet.Visible = true;。
}。

void MyCommands_MouseLeave(object sender, EventArgs e)。
{。
ListView listview = (ListView)sender;。
列表视图,BackColor = SystemColors.Control;。
}。

void MyCommands_MouseEnter(object sender, EventArgs e)。
{。
ListView listview = (ListView)sender;。
列表视图,BackColor = SystemColors.ControlDark;。
}。

void MyCommands_MouseClick(object sender, MouseEventArgs e)。
{。
if (e.Button == MouseButtons.Left)。
{。
ListView listview = sender as ListView;。
MessageBox.Show(listview.文本);。
//如何获取鼠标点击列表项目 ?。
//编辑,WriteMessage(listview.文本 + “\n”);。
}。
}。

}。
}。

**** Hidden Message *****

n.yuan 发表于 2022-1-8 09:36:40

您不会使用鼠标输入[离开,单击]来确定用户是否单击了ListView中的ListViewItem(因此它被选中)。作为一个UI控件,如ListBox,ListView带有专为其功能设计的属性/事件。在识别所选ListViewItem或ListViewItems的情况下,您应该查看诸如:SelectedItems/SelectedDices/CheckedItems/FocusedItem之类的属性以及诸如:SelectedIndexChanged/ItemChecked之类的事件。对于您的代码,您只需要将SelectedIndexChanged事件连接到您创建的每个ListView
我相信您正在探索“概念验证”代码,并且您不会真的用CommandMethod编写UI,是吗?

badjo_5 发表于 2022-1-9 13:45:49

您应该使用ListView构建UserControl,并从UserControl处理所有ListView事件/属性/方法
然后,选项板集将处理Autocad的所有事务,用户控件自行负责
类似这样的:https://drive-cad-with-code.blogspot.com/2010/09/pluggable-paletteset.html?m=0
这是一个很好的例子

QQ25294717 发表于 2022-1-15 00:46:23

公共类MyCommands。
{。
//。
私有编辑器aced =应用程序,document manager . mdiactivedocument . editor;。
private Control[]Control = new Control;。
private ListView[]ListView = new ListView;。
/// 。
/// AddMyPaletteSet。
/// 。

public void AddMyPaletteSet()。
{。
PaletteSet myPaletteSet = new PaletteSet(" Menu ");。
myPaletteSet,Style = PaletteSetStyles,ShowAutoHideButton。
for(int I = 0;I 。
{。
control =新控件(" Group "+I);。
myPaletteSet,Add("Group" + i,control);。
ListView= new ListView();。
列表视图,Dock =DockStyle,填充;。
列表视图,视图=视图,列表;。
列表视图,FullRowSelect = true。
列表视图,BackColor = SystemColors,控制;。
for(int ii = 0;ii 。
{。
listview. items . add(" Button "+I+"-"+ii);。
}。
列表视图,selectedindex changed+=(my commands _ selectedindex changed);//添加事件。
control. controls . add(listview);。
}。
myPaletteSet,可见=真;。
}。
/// 。
///selectedindex changed 。
/// 。
/// 。
/// 。
void my commands _ selectedindex changed(对象发送方,EventArgs e)。
{。
ListView ListView = sender as ListView;//获取listview 。
if (listView,SelectedItems . Count > 0)//已经选择的项目& # 12290;。
{。
string str = listView,选择编辑项目,子项。文本;。

}。
}。
}。
页: [1]
查看完整版本: 如何获取MouseClick listItem?