c# - 当其他按钮处于活动状态时,按钮/更改边框颜色 C# 设置回默认值
问题描述
我有三个按钮。一旦我单击一个,它将其边框颜色更改为不同的颜色并显示其活动状态,但要将其设置为默认值,我必须再次单击该按钮。所有这三个按钮都代表不同的动作,它们不能为用户同时运行。如果单击按钮 2,您知道如何设置回按钮 1 的默认边框颜色吗?
在 xamarin 中创建了我的 bytton,这是背后的代码。
我试图为此创建一个单独的方法,但我找不到按钮。
protected void EnglishToCzech_Clicked(object sender, EventArgs e)
{
Button englishtoczech = (Button)sender;
if (englishtoczech.BorderColor.Equals(Color.Default))
english.BorderColor = Color.FromHex("#da2c43");
else
englishtoczech.BorderColor = Color.Default;
}
protected void CzechToEnglish_Clicked(object sender, EventArgs e)
{
Button czechtoenglish = (Button)sender;
if (czechtoenglish.BorderColor.Equals(Color.Default))
english.BorderColor = Color.FromHex("#da2c43");
else
czechtoenglish.BorderColor = Color.Default;
}
protected void English_Clicked(object sender, EventArgs e)
{
Button english = (Button)sender;
if (english.BorderColor.Equals(Color.Default))
english.BorderColor = Color.FromHex("#da2c43");
else
english.BorderColor = Color.Default;
}
解决方案
好的,如果我理解正确,您可以在每次点击时重置所有颜色。首先,您需要为按钮分配名称。如果您使用 XAML 添加x:Name
属性并为它们命名。我想你给它们起名字,englishtoczech
但你可以给它们起任何名字。惯例是骆驼案。然后你可以像这样在你的代码中使用它们:czechtoenglish
english
protected void EnglishToCzech_Clicked(object sender, EventArgs e)
{
if (englishtoczech.BorderColor.Equals(Color.Default))
{
englishtoczech.BorderColor = Color.FromHex("#da2c43");
czechtoenglish.BorderColor = Color.Default;
english.BorderColor = Color.Default;
}
else
englishtoczech.BorderColor = Color.Default;
}
protected void CzechToEnglish_Clicked(object sender, EventArgs e)
{
if (czechtoenglish.BorderColor.Equals(Color.Default))
{
czechtoenglish.BorderColor = Color.FromHex("#da2c43");
englishtoczech.BorderColor = Color.Default;
english.BorderColor = Color.Default;
}
else
czechtoenglish.BorderColor = Color.Default;
}
protected void English_Clicked(object sender, EventArgs e)
{
if (english.BorderColor.Equals(Color.Default))
{
english.BorderColor = Color.FromHex("#da2c43");
englishtoczech.BorderColor = Color.Default;
czechtoenglish.BorderColor = Color.Default;
}
else
english.BorderColor = Color.Default;
}
这是一个非常简单的方法,但是您应该考虑两件事:
你不应该在按钮边框颜色上构建你的逻辑,最好有一些变量来保存系统的状态。
在更高级的场景中,如果您是专业人士,我强烈建议您阅读 MVVM 并在 Xamarin 项目中尝试。这让你的生活更轻松
让我详细说明第一点。
您将在此处设置边框颜色,但没有任何反应。我想稍后在另一个事件中,您将检查按钮的边框颜色并对其进行一些逻辑处理。
这样,您就可以在边框颜色上构建逻辑。您可以创建一个enum
public enum State
{
None,
English,
EnglishToCzech,
CzechToEnglish
}
然后在您的代码 bihind 添加该枚举的变量
private State state = State.None;
最后相应地设置每个按钮单击的状态。
这只是一个例子,希望对您有所帮助。
推荐阅读
- java - 如何将值绑定到计算结果?
- xamarin - 在 Xamarin.IOS 和 Xamarin.Android 光标修改器中更改字体大小?
- html - Vertical 100% height static image next to scrollable text in auto-width div
- spring - 执行时间反应式编程
- java - 如何更改“given()”链中前面给出的放心设置?
- javascript - 用空白页反应生产构建结果。开发服务器工作
- apache-nifi - 带有 Google Flatbuffers 有效负载的 Websocket 流的 Apache NiFi
- jsp - Java 8,JSP - 应该将 Optional 对象放在 request.setAttribute() 或 session.setAttribute() 中吗?
- sql - Why SQL query with SHA2_256 returns NULL in WHERE clause
- coinbase-api - 开发者可以控制他们的私钥吗?