我的主要问题是我不知道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等容器控件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)