wpf中listbox添加多个文件

wpf中listbox添加多个文件,第1张

wpf中listbox添加多个文件我有一个实现拖放的ListBox:它适用于单个项目(选择一个项目,然后将其拖动到另一个项目的顶部将其放置在正确的位置),但是当选择多个项目(使用shift或ctrl)时,我尚未能够使其工作。

我的主要问题是我不知道DragDrop.DoDragDrop函数如何处理一批项目。它适用于单个项目(指定FrameworkElement,然后指定数据格式和数据,最后指定拖动效果)。但是,如果我有多个项目,该如何使用DoDragDrop?由于我必须指定一种格式,难道它不会总是期望该格式的单个实例吗?我有几个要拖放的"实体",如何告诉DragDrop.DoDragDrop在一个 *** 作中接受所有这些数据?

当我仅将一个DataObject传递给DoDragDrop方法时,它可以完美地工作,但是我需要找到一种在一次调用中传递多个对象的方法。

到目前为止,我已经尝试创建多个DataObjects并尝试创建一个数组或列表以将其添加到DoDragDrop作为其数据,但这是行不通的。我还尝试了循环DoDragDrop,因此它为我拖动的每个项目调用了一次,但也无效。

选择Blank GUI,然后更改保存路径

在这里插入图片描述

2. 点击列表框

然后拖动出来,同样把三个按钮、两个可编辑文本和坐标区,拖动出来

在这里插入图片描述

3. 双击列表框菜单看它的属性

改变字体大小和显示内容

在这里插入图片描述

4. 双击按钮查看它的属性

更改字体大小和显示内容

在这里插入图片描述

同样更改另外两个按钮

5 点击可编辑文本

更改字体大小和显示内容

在这里插入图片描述

6. 点击列表框

右键按钮,查看回调,选择CreateFcn

创造函数,通过这个函数实现选中某个选项后不仅选中了对应选项的字符串,还选中了该选项对应的行向量。

在这里插入图片描述

在这里插入图片描述

这里是为了在列表框中选中选项的时候,不仅选中了这个选项的字符串,还选中了这个字符串代表的实际参数行向量。

%% 当listbox刚被创建时,定义四组参数的值

t=0:0.01:2*pi

canshu1 = t

canshu2 = sin(t)

canshu3 = cos(t)

canshu4 = sin(t)+cos(t)

CS = {canshu1,canshu2,canshu3,canshu4} %% 将四组参数保存在cell中

handles.CS = CS%% 将CS保存到handles结构体中

guidata(hObject,handles)%%更新和保存handles结构体

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

7. 右键按钮

点击查看回调,选择Callback

在这里插入图片描述

在这里插入图片描述

将选中的选项显示在edit中

%% 获得列表框选中的选项的值,就是选项的行数

selected_index = get(handles.listbox1,'Value')

% 获得列表框选项的所有内容,是cell结构

str = get(handles.listbox1,'String')

% 将选中选项的内容赋值给edit1

set(handles.edit1,'String',str{selected_index})

% 将选中选项对应的参数行向量赋值给x

x = handles.CS{selected_index}

handles.x = x%% 将x保存到handles结构体中

guidata(hObject,handles)%%更新和保存handles结构体

1

2

3

4

5

6

7

8

9

10

1

2

3

4

5

6

7

8

9

10

同样,另一个参数按钮也是相同的 *** 作,找到它的回调函数,Callback

%% 获得列表框选中的选项的值,就是选项的行数

selected_index = get(handles.listbox1,'Value')

% 获得列表框选项的所有内容,是cell结构

str = get(handles.listbox1,'String')

% 将选中选项的内容赋值给edit2

set(handles.edit2,'String',str{selected_index})

% 将选中选项对应的参数行向量赋值给

y = handles.CS{selected_index}

handles.y = y%% 将y保存到handles结构体中

guidata(hObject,handles)%%更新和保存handles结构体

1

2

3

4

5

6

7

8

9

10

1

2

3

4

5

6

7

8

9

10

打开绘制图像按钮的Callback函数

在这里插入图片描述

%% 将图像绘制在axes1上

axes(handles.axes1) % 设置axes1为当前绘制区

plot(handles.x,handles.y) % 绘制图像

axis equal% x,y轴等

WinForm中的ListBox控件是用于显示一列选项或条目的常见工具。在WinForm中,可以使用ListBox.Items属性来添加和管理控件中的条目。如果您想添加控件而不是简单的文本,可以通过以下步骤完成:

1. 首先,在Visual Studio中为您的项目添加一个控件。您可以选择任何您需要的控件类型,例如Label、Button、PictureBox等等。

2. 将控件添加到ListBox控件中,可以通过使用ListBox的Item.Add方法实现。这将在ListBox控件中添加一个新的ListItem对象。

3. 然后,您需要将新添加的控件与ListItem关联。这可以通过设置ListItem.Tag属性来完成。例如,您可以将控件实例赋给ListItem.Tag属性,这样就能够在ListBox中轻松地访问该控件。

4. 最后,您需要更新ListBox控件以显示已添加的控件。这可以通过调用ListBox的Refresh方法来完成。

下面是一个简单的示例代码,它向ListBox控件中添加了一个CheckBox控件:

```

// 创建一个新的CheckBox控件

CheckBox checkBox = new CheckBox()

checkBox.Width = 100

checkBox.Text = 选择

checkBox.Checked = true

// 将新的CheckBox添加到ListBox控件中

listBox1.Items.Add(new ListItem(Item with CheckBox, checkBox))

// 更新ListBox

listBox1.Refresh()

```

当然,如果您需要添加其他类型的控件,只需要按照类似的步骤 *** 作即可。需要注意的是,ListBox控件并不是最佳的容器类型,如果您需要在WinForm中添加更复杂的控件,可以考虑使用Panel或者TabControl等容器控件。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11710952.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存