2015-02-27 7 views
0
private void Button_Click(object sender, RoutedEventArgs e){ 
    Button btn = (Button)sender; 
    if(/*insert if condition here*/) 
    { 
     cntr = 1; 
     void1(); 
    } 
} 

В настоящее время я разрабатываю приложение для хранилища Windows C#. У меня есть TextBlock, который может иметь текст либо красного, оранжевого, желтого, зеленого, синего, индиго или фиолетового. У меня также есть семь кнопок с разными цветами фона. Теперь, я хочу проверить, соответствует ли текст моего TextBlock цвету задней кнопки кнопки.Сравнение строки с цветом фона

ответ

0

используйте устройство BrushConverter экземпляр для преобразования текста текстового блока в Brush объекта, а затем сравнить эту кисть на фоне данной кнопки ,

Некоторые примеры XAML:

<StackPanel> 
    <TextBlock x:Name="MyTextBlock" Text="Red" /> 
    <Button Content="Blue" Background="Blue" Click="OnColorButtonClick" /> 
    <Button Content="Red" Background="Red" Click="OnColorButtonClick" /> 
    <Button Content="Green" Background="Green" Click="OnColorButtonClick" /> 
    <Button Content="Yellow" Background="Yellow" Click="OnColorButtonClick" /> 
</StackPanel> 

... и код кнопки обработчик (обратите внимание, что все кнопки в примере использовать один и тот же обработчик щелчка):

private void OnColorButtonClick(object sender, RoutedEventArgs e) 
{ 
    var converter = new BrushConverter(); 
    var textblockBrush = 
     converter.ConvertFromString(MyTextBlock.Text) as Brush; 
    var button = (Button) sender; 
    if (button.Background == textblockBrush) 
    { 
     // text of my TextBlock matches the backgound color of the Button clicked 
    } 
} 
0

попробовать btn.BackColor.ToString() == textblock.Text сделать сравнение

+0

Это не будет work .. –

+0

** BackColor ** является свойством кнопки в Windows Forms, но OP спрашивал о WPF. –

0

Так что я сделал быструю программу, чтобы увидеть, если это будет работать, и это было сделано. Просто следуйте за заметками о том, что нужно изменить. Просто делайте одно, просматривая этот код. Попытайтесь понять, что делает каждая строка.

private void btn2Control_Click(object sender, EventArgs e)//This button color is Control 
    { 
     if (label1.BackColor == button2.BackColor)//You are going to want to substatut your label name for label1 
     { 
      Console.WriteLine("Here");//This was just to make sure the program did match the colors 
     } 
    } 

    private void btn1Yellow_Click(object sender, EventArgs e)//This button color is Yellow 
    { 
     if (label1.BackColor == button1.BackColor) 
     { 
      Console.WriteLine("Here"); 
     } 
    } 
+0

это WPF .. так что это не сработает. –

+0

Как вы меняете цвет фона кнопки? – Funlamb

+0

Так что я уже давно это делаю. Я не могу найти решение. Я могу сказать вам путь к следующему. Сначала вам нужно узнать, какой цвет имеет ваш текст. Итак, черный # FF000000. Затем вам нужно будет проверить это на цвет фона кнопки. – Funlamb

0

Поскольку вы используете WPF вы должны использовать следующие свойства,

I «Я не буду писать логику, потому что это нечисто, что вы действительно хотите, но то, что вам нужно сделать, это получить цвет переднего плана, примененный в TextBLock, и сравните его с нажатием кнопки Background, используя вышеуказанные свойства.

например: Код для IF сравнения

if(TextBlock.Foreground == btn.Background){ 
     // Color matching 
     // Do things here 
    } 
+0

Класс ** TextBlock ** не имеет статического свойства, называемого «TextBlock». –

+0

@Steven Rands Опечатка :) –

0
private void Button_Click(object sender, RoutedEventArgs e){ 
    Button btn = (Button)sender; 
    if(button.Background == textBlock.TextBlock) 
    { 
     cntr = 1; 
     void1(); 
    } 
} 
+0

Хотя этот блок кода может ответить на вопрос, это был бы лучший ответ, если бы вы могли дать некоторое объяснение, почему оно это делает. – DavidPostill

+0

Я предполагаю, что 'textBlock', как используется здесь, должен ссылаться на экземпляр ** TextBlock ** объекта. Класс ** TextBlock ** не имеет свойства, называемого «TextBlock», поэтому этот код не будет компилироваться. Даже если вы имели в виду свойство «Текст», которое не работает, так как вы пытаетесь сравнить объект ** Brush ** с объектом ** string **. –

+0

К сожалению, набрав ошибку. Правильно: 'code' if (кнопка.Background == textBlock.foreground) – Xinoon

Смежные вопросы