maxscript - 添加多个按钮和可见属性时的用户控件问题
问题描述
这是 Maxsript 中 dotNet 中可见性中断的一个已知问题。这是一个线程,展示了如何将按钮添加到 aUserControl
以使其正常工作。
我的问题是我想添加多个按钮,UserControl
一旦我知道要取消隐藏哪个不在此版本中,我想将按钮移动到位,但这是我需要此功能的意图。
第二个按钮没有显示,即使它的位置对于听众来说是正确的。
我希望我不必UserControl
为每个按钮添加单独的!
如何向控件添加多个按钮并让它们更新其位置和可见性?
clearListener()
try destroyDialog RollsRoyce catch()
rollout RollsRoyce "" width:400 height:60
(
local btnH = 33
local btnW = RollsRoyce.width/2
dotnetcontrol panelVisibleFix "UserControl" width:RollsRoyce.width height:btnH pos:[0,15]
dotNetControl btn1 "button" text:"Button 1..." visible:false width:btnW height:btnH
dotNetControl btn2 "button" text:"Button 2..." visible:false width:btnW height:btnH
on RollsRoyce open do
(
btn1.FlatStyle = btn1.FlatStyle.System
btn2.FlatStyle = btn2.FlatStyle.System
panelVisibleFix.controls.addrange #(btn1, btn2)
-- Add the button to the panel and unhide it.
-- In my main script I want to check for conditions to have these visible or
-- not but with this simple example I want to unhide then.
btn1.visible = true
RollsRoyce.btn1.pos = panelVisibleFix.pos
-- This button is not getting shown.
btn2.visible = true
RollsRoyce.btn2.pos = RollsRoyce.panelVisibleFix.pos+[RollsRoyce.btnW,0]
format "btn1 position is: %\n" RollsRoyce.btn1.pos
format "btn2 position is: %\n" RollsRoyce.btn2.pos
)
)
createdialog RollsRoyce
解决方案
您正在使用转出控件,就好像它们是常规的 .NET 控件一样,并且您在转出的上下文中设置它们的位置,就好像您在 .NET 控件中设置它一样。要么做一件事,要么做另一件事。使用转出控件中的 .NET 控件,它可能看起来像这样:
try destroyDialog RollsRoyce catch()
rollout RollsRoyce "" width:400 height:60
(
local btnH = 33
dotNetControl panelVisibleFix "FlowLayoutPanel" width:RollsRoyce.width height:btnH pos:[0,15]
fn makeNETBtn width height text visible:on =
(
local btn = dotNetObject "Button"
btn.Text = text
btn.Width = width
btn.Margin = dotNetObject "Padding" 0 0 0 0
btn.Height = height
btn.FlatStyle = btn.FlatStyle.System
btn.Visible = visible
return btn
)
on RollsRoyce open do
(
local btnW = RollsRoyce.width / 2
local btn1 = makeNETBtn btnW btnH "Button 1..." visible:off
local btn2 = makeNETBtn btnW btnH "Button 2..." visible:off
panelVisibleFix.Controls.AddRange #(btn1, btn2)
btn1.visible = on
btn2.visible = on
)
)
createDialog RollsRoyce
推荐阅读
- django - CreateView 问题,提交时未在模型中创建对象
- c++ - 我如何制作一个作为类对象并具有编译时大小的数组?
- mysql - SQL - 寻找具有相似兴趣的用户
- python - 在 Python 中使用多处理进行递归处理
- visual-studio-code - Ballerina Integrator 的问题
- c++ - 在不提供所有权的情况下公开 shared_pointers 的向量
- python - Python-PPTX: KeyError: '这张幻灯片上没有 idx == 1 的占位符'
- react-native - 多次加载组件时如何进行api调用
- r - Travis CI 使用我的使用 C++、Rcpp 和 RcppArmadillo 的 R 包构建错误
- c# - #使用
C++CLI 失败