Visual Studio 2013 - 更改 C++/CLI Windo 窗体中特定事件"sender"的属性,而无需切换所有事件
visual studio 2013 - Alter properties of specific event "sender" in C++/CLI Windoes Form without switching through them all
所以,我有一个带有许多数字向上和向下字段的表单,每个字段都与描述该字段的"统一系统"的标签相关联(例如,m/s, ft, hp等)。我把标签做成了可点击的,这样用户就可以改变每个字段的统一系统,以及相应的数值。
Ok,我转换了已单击的标签数据,以确定单击了哪个标签以及必须进行的计算。但是现在他们已经完成了,我需要改变标签文本,点击的那个,它可以是任何人....
理想的情况是这样的:
String^ LabelName = ... cast ... sender ... -> name (or some other property to identify the sender, like tabIndex)
这是好的,我可以转换发送者,识别它,并对它做正确的事情。但是,我必须更改表单中的发送者,但我不知道它是谁,所以我需要这样的内容(理想情况下):
this -> LabelName -> Text = .....
显然,它不是这样工作的。有人能帮我吗?
一定有什么神奇的东西让你在一个问题上绞尽脑汁,然后睡一觉,想想别的事情。在那之后,有时我们设法相当容易地解决问题。
更具体地说,在表单中有许多集:一个包含统一系统的可点击标签,一个带有值的数字updown控件和一个带有乘数的隐藏文本框,用于从一个系统转换到另一个系统。这可能不是最好的安排,但现在还不错。所以,我找到的一个解决方案是这样的(tb = textbox, nud = numericUpDown):
首先,我转换所有相关的控件(而不仅仅是它们的一个属性),并且转换在单击标签之后出现的其他控件,我使用这个最近发现的方法:getNextControl(),如下所示:
Label^ thisLabel = safe_cast< Label^ >( sender ); // this is the clicked label
NumericUpDown^ thisNud = safe_cast< NumericUpDown^ >( GetNextControl ( thisLabel, true ) ); // this contains the numeric value, and comes right after the label
TextBox^ thisTb = safe_cast< TextBox^ >( GetNextControl ( thisNud, true ) ); // this is a hidden field one a multiplier for conversions
之后,我对值和其他属性进行所有需要的操作。有了最终结果和其他数据在手,我可以(如此简单地)像这样做:
thisLabel -> Text = u[ i ];
thisNud -> Maximum = System::Convert::ToDecimal( maximum / m[ i ] );
thisNud -> Value = System::Convert::ToDecimal( vNow / m[ i ] );
thisTb -> Text = System::Convert::ToString ( m[ i ] );
当我决定试一试的时候,我简直不敢相信它能成功。几乎和我上面提到的理想情况一样。这假设3个控制器是TabIndexed一个接一个....
希望这将有助于其他一些像我一样的新手!
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- Android NDK传感器向事件队列报告奇怪的间隔
- C++概念:如何使用'concept'检查模板化结构的属性?
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 通过指向指针数组的指针访问子类的属性
- 从文本文件中读取时钟时间和事件时间并进行处理
- MSVC是否支持C++11样式的属性而不是__declspec
- WMI检测进程创建事件-c++
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 类的C++属性似乎已重新初始化
- Qt Quick-如何仅从c++代码与qml属性交互
- 处理闪烁窗口事件
- C++Builder中的OnClick事件签名存在问题
- 是否可以在C++(17)中捕获某些对象属性的破坏性赋值事件
- 如何使用从C++生成的关键事件更改 QML 文本字段文本属性
- 将项目属性与qt中的事件一起传递到主窗口
- 从属性页的事件处理程序调用DoModal()不会弹出对话框
- 如何在属性表中捕获"tab changed"事件
- Visual Studio 2013 - 更改 C++/CLI Windo 窗体中特定事件"sender"的属性,而无需切换所有事件