Отключенные элементы «едят» клики в некоторых браузерах - они не отвечают на них и не позволяют захватить их обработчиками событий в любом элементе или в любом из его контейнеров.
IMHO - самый простой, Самый чистый способ «исправить» это (если вам действительно нужно зафиксировать клики на отключенных элементах, таких как OP), просто добавьте следующий CSS на вашу страницу:
input[disabled] {pointer-events:none}
Это сделает любой клики на отключенном входе попадают в родительский элемент, где вы можете их захватить в обычном режиме. (Если у вас есть несколько отключенных входов, вы можете поместить их в отдельный контейнер самостоятельно, если они еще не выложены таким образом - дополнительный Недостатком является то, что этот трюк, к сожалению, не будет работать для старых браузеров, которые не поддерживают свойство CSS Если вам нужно поддерживать старые браузеры, Вам нужно будет использовать один из других ответов! или
pointer-events
. Он должен работать от IE 11, FF v3.6, Chrome v4): caniuse.com/#search=pointer-events
WinForm:
private void button1_Click(object sender, EventArgs e)
{
button2.BackColor = Color.Red;
}
WPF:
private void button1_Click(object sender, RoutedEventArgs e)
{
button2.Background = Brushes.Blue;
}
Сначала у меня возникли проблемы с настройкой цветов для элементов управления приложениями WPF. Похоже, что он не включает System.Windows.Media
по умолчанию, но включает Windows.UI.Xaml.Media
, который имеет некоторые предварительно заполненные цвета.
В итоге я использовал следующую строку кода, чтобы заставить его работать:
grid.Background.SetValue(SolidColorBrush.ColorProperty, Windows.UI.Colors.CadetBlue);
Вы сможете изменить grid.Background
на большинство других элементов управления, а затем изменить CadetBlue
на любой из другие цвета это обеспечивает.
В WPF фоном является не Color
, а Brush
. Итак, попробуйте это для начала:
using System.Windows.Media;
// ....
ButtonToday.Background = new SolidColorBrush(Colors.Red);
Более разумно, однако, вы, вероятно, должны смотреть на это в вашем Xaml, а не в коде.
// WPF
// Defined Color
button1.Background = Brushes.Green;
// Color from RGB
button2.Background = new SolidColorBrush(Color.FromArgb(255, 0, 255, 0));
Код для установки цвета фона, для SolidColor
:
button.Background = new SolidColorBrush(Color.FromArgb(Avalue, rValue, gValue, bValue));
Я сомневаюсь, что любой из них должен работать. Попробуйте: сначала импортируйте пространство имен в начале кодовой страницы, как показано ниже.
using System.Drawing;
затем в коде.
Button4.BackColor = Color.LawnGreen;
Надеюсь, это поможет.