VC6.0中 如何将 LIST control中的信息读取到文本编辑框中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC6.0中 如何将 LIST control中的信息读取到文本编辑框中相关的知识,希望对你有一定的参考价值。
最好能给我一个范例程序
您好,新建一个基于对话框的工程,命名为LCDemo,然后在对话框中按照图一所示添加一个List Control和两个Button,设置List Control样式为Report。为List Control关联一个变量m_listCtrl,并通过ClassWizard为List Control和Button添加Click消息的响应函数。先在OnInitDialog()函数中对控件初始化,就是为List Control添加列,并插入10行列表项目,详细内容请参考附带的源代码,我只想列出主要的代码片断。
为对话框类定义一个整型变量IndexInFieldList,用它来存储项目索引,把下面代码粘贴到CLCDemoDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 函数中。
01.void CLCDemoDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
02.
03.POSITION pos;
04.pos = m_listCtrl.GetFirstSelectedItemPosition();
05.
06.// 得到项目索引
07.IndexInFieldList = m_listCtrl.GetNextSelectedItem(pos);
08.
09.*pResult = 0;
10.
在向上移动操作按钮的WM_CLICK消息响应函数中写入下面代码。
view sourceprint?
01.void CLCDemoDlg::OnButtonUp()
02.
03.m_listCtrl.SetFocus();
04.
05.if (IndexInFieldList == -1)
06.return;
07.
08.// 判断所选项是否位于行首
09.if (IndexInFieldList == 0)
10.
11.AfxMessageBox("已经位于第一行!");
12.return;
13.
14.
15.// 提取所选列表项各列类容
16.CString tempField1, tempField2, tempField3;
17.tempField1 = m_listCtrl.GetItemText(IndexInFieldList, 0);
18.tempField2 = m_listCtrl.GetItemText(IndexInFieldList, 1);
19.tempField3 = m_listCtrl.GetItemText(IndexInFieldList, 2);
20.
21.// 删除所选列表项
22.m_listCtrl.DeleteItem(IndexInFieldList);
23.
24.// 在IndexInFieldList-1位置处插入上面所删列表项的各列类容
25.int tempItem;
26.tempItem = m_listCtrl.InsertItem(IndexInFieldList-1, _T(tempField1));
27.m_listCtrl.SetItemText(tempItem, 1, _T(tempField2));
28.m_listCtrl.SetItemText(tempItem, 2, _T(tempField3));
29.IndexInFieldList--;
30.
31.// 使得IndexInFieldList-1位置处项目高亮显示并获得焦点
32.UINT flag = LVIS_SELECTED|LVIS_FOCUSED;
33.m_listCtrl.SetItemState(IndexInFieldList, flag, flag);
34.
向下移动操作按钮的响应函数代码与上面的代码类似,请参考本文所附源代码,因为代码有相关中文注释,这里我就不再赘述了。
运行情况
具体的运行效果请编译好附带源代码后执行。 参考技术A 为LIST control的通知消息NM_CLICK添加消息处理函数,在消息响应函数的里添加代码:
*pResult = 0;
CString strLangName; // 定义一个字符串用于存放文本
NMLISTVIEW *pNMListView = (NMLISTVIEW*)pNMHDR;
if (-1 != pNMListView->iItem) // 如果iItem不是-1,就说明有列表项被选择
strLangName = m_programLangList.GetItemText(pNMListView->iItem, 0); // 获取被选择列表项第一个子项的文本
SetDlgItemText(IDC_EDIT, strLangName); // 将文本显示到编辑框中 ,IDC_EDIT为编辑框的ID
参考技术B 先 listctrl.GetItemText
然后 edit.SetWindowText追问
能不能帮我写一个小的源程序呀
追答我没有安装vs
你按照我的步骤
1。建立多话框工程
2。放2个控件
3。绑定控件变量
4。放个按钮
5。按我说的调用
有问题追问我
如何将文本字段中的数据推送到另一个 VC 中的标签
【中文标题】如何将文本字段中的数据推送到另一个 VC 中的标签【英文标题】:How to push data from textField to label in another VC 【发布时间】:2020-09-27 11:50:31 【问题描述】:我有带有 4 个标签和 4 个 goToVC 按钮的 mainVC,每个按钮使用 segue 来呈现另外 4 个 VC。每个 vc 都有 textField 和 doneButton。我想在 mainVC 标签中显示 textField 中的文本,并且我想使用委托。但相反,我得到了空标签。请帮忙。
委托.swift
protocol TextFieldDelegate
func didFinishTextField(text: String)
MainVC.swift
class MainViewController: UIViewController, TextFieldDelegate
@IBOutlet weak var redText: UILabel!
@IBOutlet weak var orangeText: UILabel!
@IBOutlet weak var pinkText: UILabel!
@IBOutlet weak var purpleText: UILabel!
var choosenLabel: UILabel?
override func viewDidLoad()
super.viewDidLoad()
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
if segue.identifier == "toRedVC"
let vc = segue.destination as! RedViewController
vc.delegate = self
choosenLabel = redText
else if segue.identifier == "toOrangeVC"
let vc = segue.destination as! OrangeViewController
vc.delegate = self
choosenLabel = orangeText
else if segue.identifier == "toPinkVC"
let vc = segue.destination as! PinkViewController
vc.delegate = self
choosenLabel = pinkText
else if segue.identifier == "toPurpleVC"
let vc = segue.destination as! PurpleViewController
vc.delegate = self
choosenLabel = purpleText
func didFinishTextField(text: String)
if let data = choosenLabel
data.text = text
@IBAction func redButton(_ sender: UIButton)
@IBAction func orangeButton(_ sender: UIButton)
@IBAction func pinkButton(_ sender: UIButton)
@IBAction func purpleButton(_ sender: UIButton)
RedVC(其他3个相同).swift
class RedViewController: UIViewController
var delegate: TextFieldDelegate?
var textVar: String = ""
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view.
@IBAction func textField(_ sender: UITextField)
if let data = sender.text
textVar = data
@IBAction func doneButton(_ sender: UIButton)
delegate?.didFinishTextField(text: textVar)
dismiss(animated: true, completion: nil)
【问题讨论】:
看起来您正在向 mainVC 发送空字符串。使用 delegate?.didFinishTextField(text: textfield.text).make 你在 redVC 中创建 textfield 的出口 【参考方案1】:您的代码似乎一切正常。我建议您检查您的文本字段的操作是否在 ViewController 中设置为 editingChanged。
【讨论】:
以上是关于VC6.0中 如何将 LIST control中的信息读取到文本编辑框中的主要内容,如果未能解决你的问题,请参考以下文章
VC6.0中基于对话框的MFC EXE中的Tab Control控件如何使用???
VC6.0中的Tree Control控件,如何给有的节点设checkbox,而有的节点不设?具体代码如何实现?