- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
你好,我正在制作带面板的 10x10 立方体,当你点击面板 X 次时面板需要改变颜色,但代码太大了,有没有其他方法可以让代码不那么长?
这是我的代码:
int cont1 = 0, cont2 = 0, cont3 = 0, cont4 = 0, cont5 = 0, cont6 = 0, cont7 = 0, cont8 = 0, cont9 = 0, cont10 = 0;
然后是更改颜色的事件(我所有的面板都有相同的代码,但区别在于“cont”和面板名称):
private void panel1_MouseClick(object sender, MouseEventArgs e)
{
cont1++;
if (cont1 <= 5)
{
panel1.BackColor = Color.SlateBlue;
}
if (cont1 >=5)
{
panel1.BackColor = Color.Cyan;
}
if (cont1 >= 10)
{
panel1.BackColor = Color.Lime;
}
if (cont1 >= 15)
{
panel1.BackColor = Color.Yellow;
}
if (cont1 >= 20)
{
panel1.BackColor = Color.Red;
}
}
//other panel
private void panel2_MouseClick(object sender, MouseEventArgs e)
{
cont2++;
if (cont2 <= 5)
{
panel2.BackColor = Color.SlateBlue;
}
if (cont2 >= 5)
{
panel2.BackColor = Color.Cyan;
}
if (cont2 >= 10)
{
panel2.BackColor = Color.Lime;
}
if (cont2 >= 15)
{
panel2.BackColor = Color.Yellow;
}
if (cont2 >= 20)
{
panel2.BackColor = Color.Red;
}
}
注意:每个面板都会改变颜色,不是同时发生的实际上使用 4x4,但 10x10 对我来说很大
最佳答案
您实际上不需要创建大量变量,因为您需要跟踪控制状态。您可以利用 control Tags 的存在并减少您编写的代码量。
Be it 1000 x 1000 panels the below method would work flawlessly for your usecase. All you need do is point all target panel
mouseClick
to it and allow it handle the rest.
private void panel_MouseClick(object sender, MouseEventArgs e)
{
Control ctrl = sender as Control;
//get previous value from control tag or start at 0
int count = ctrl.Tag == null ? 0 : (int)ctrl.Tag;
//set backcolor of control based on tag number
if (count >= 20) ctrl.BackColor = Color.Red;
else if (count >= 15) ctrl.BackColor = Color.Yellow;
else if (count >= 10) ctrl.BackColor = Color.Lime;
else if (count >= 5) ctrl.BackColor = Color.Cyan;
else ctrl.BackColor = Color.SlateBlue;
// if (count == xx)
//{// you may want to reset count after a certain number. Do that here...}
ctrl.Tag = ++count;
}
关于c# - 如何制作具有相同行为的不同面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57367360/
我有一个 Bootstrap 面板,里面有另一个面板。两者在面板标题中都有一个字形图标。默认情况下,面板是折叠的。当面板折叠时,将设置 glyphicon-unchecked。当我点击这个字形图标时,
使用 Grafana 时,我们会在某些电视上使用它。有谁知道制作它的方法,如果有人添加面板,更改布局等,它不仅会自动刷新数据,还会自动刷新实际仪表板? 我们真的厌倦了不断要求具有远程访问权限的人登录并
基本上,我试图让屏幕底部有 3 个按钮,然后在屏幕中间有一个包含文字的标签。但是,我似乎无法同时在 GUI 中同时拥有按钮和标签。我是一名初学者,对布局了解不多(即使我已经阅读过它们),因此任何帮助/
作为学校的类(class)作业,我们必须提出一个自定义项目,我选择了一个原本打算在 ActionScript 上编写的游戏创意,但决定在 Java 上插入它。最初进展顺利,游戏代码正常运行, Spri
我正在尝试使用 Java Graphics 制作一个生命模拟游戏,但是当运行我的代码时,屏幕的左侧三分之一是灰色的。我希望整个屏幕是白色的,黑色方 block 代表生命方 block 。我对所有 ja
下面是动态驱动的一个不错的“下拉面板”。 http://www.dynamicdrive.com/dynamicindex17/dddropdownpanel.htm 如您所见,它是一个面板,在打开时
所以我有这个函数 onDisplayError ,如果请求失败,每次都会调用它。这意味着如果用户按下保存按钮并且 3 个请求失败,我当前会收到 3 个弹出消息。我的目标是此函数检查我的弹出窗口是否已打
我正在尝试为我的一个类(class)制作一款游戏,但在实现一些我想做的事情时遇到了麻烦。本质上,我希望在同一个图形用户界面窗口中包含多个不同的部分。 据我了解,我会使用 JPanel 来创建这些不同的
我目前正在测试这种类型的面板 jquery: http://codyhouse.co/gem/css-slide-in-panel/ 但是当我想检测从顶部滚动以显示一个 div 时:没办法:( 一种检
我可能正在搜索错误的问题,但我找不到这个问题的答案。 我有一个 AutoScroll 设置为 true 的面板。控件动态添加到面板。我需要在滚动条可见时触发一个事件,但我找不到这样的事件。 如有任何建
我有一堆 Bootstrap 面板,其中一些是相互关联的。有点像 Panel A -> Panel B -> Panel C 当用户单击面板 B 时,将显示面板 C,当单击面板 C 时,将显示面板 D
我正在尝试开发一种带有指标的下拉列表,并相应地针对应该出现在仪表板上的选定指标特定面板。反之亦然,如果未选择指标,则面板应隐藏。 我找到了链接 http://search-devops.com/m/k
我有一个窗口,窗口里面有面板。我动态地向面板添加组件。这些组件采用“hbox”布局,以便它们水平排列。单击按钮后,我将在“hbox”布局中再向面板添加一行类似组件。这里的问题是我想在第一行下面添加第二
我使用 jQuery Accordion 将表单拆分为多个面板,并使用 jQuery 验证来检查所需字段。只要验证字段位于打开的面板中,它就可以很好地显示已验证字段中的错误。 举个例子。假设我有三个
我正在尝试检查我的面板是打开还是关闭。 我尝试过这样的: $(document).on('open', '.ui-panel', function(){ console.log('open');
我有一个面板,我想将其 float 在所有窗口之上并出现在所有空间中。这可以通过 轻松完成 [self.panel setLevel:kCGUtilityWindowLevel]; [self.win
我想在格子中的单个面板上叠加多个组,并且想要独立的回归线。 获得多个面板相当容易,每个面板都有一条使用条件因子的回归线: xyplot( Petal.Width ~ Petal.Length |
Delphi 有滑动(动画)面板组件吗? 例如可以在 Raize Components 中找到它(带有“热点”或隐藏/显示按钮的左侧面板)。 我不需要一个可调整大小的面板,而是一个可以从左向右水平平滑
我有一个 Bootstrap Accordion : 我想禁用非事件面板中的所有输入控件。仅验证事件面板。 我有一个检测事件选项卡的功能: $(".panel").on("show.bs.collap
我正在尝试将组件放入不同尺寸的面板中。但是,我意识到 GridLayout 将大小相同的部分分开。如何实现如下图所示 enter image description here import java.
我是一名优秀的程序员,十分优秀!