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,而有的节点不设?具体代码如何实现?

vc6.0如何使用getwindowtext函数获取edit控件中的文本内容

vc6.0 mfc窗口问题

如何将在VC6.0下编写的类文件添加到QT工程里使用?

VC6.0,如何从sql2000数据库中的某个表读取时间数据,显示在DateTimePicker控件上