2013-09-01 3 views
-2

У меня возникли проблемы с проектом, над которым я работаю, включая щелчок по кнопке, и текст должен отображаться в ящике меток, который я создал. Я знаю, что было бы проще использовать текстовое поле для отображения текста, когда я нажимаю кнопку, но мой инструктор хочет, чтобы мы использовали ярлык вместо этого, чтобы показать текст. Я отлаживал проект, и все говорит, что все в порядке, но когда я нажимаю на одну из моих кнопок внизу, текст не отображается на назначенном ярлыке. Ниже приведен код, который я использую. Может быть, я чего-то не хватает. Например, когда я нажимаю кнопку «Контакты для клиентов», он должен отображать отдел в одной метке, имя контакта в следующем и номер телефона в следующем. Я надеюсь, что достаточно информацииТекст, не отображающийся на ярлыке при нажатии на кнопку

private void btnCustomerRelations_Click(object sender, EventArgs e) 
{ 
    lblDepartment.Text = "Customer Relations"; 
    lblContact.Text = "Tricia Smith";  
    lblPhone.Text = "500-1111"; 
} 

private void btnMarketing_Click(object sender, EventArgs e) 
{ 
    lblDepartment.Text = "Marketing";  
    lblContact.Text = "Michelle Tyler";  
    lblPhone.Text = "500-2222";  
} 

private void btnOrderProcessing_Click(object sender, EventArgs e)  
{  
    lblDepartment.Text = "Order Processing";  
    lblContact.Text = "Kenna Ross";  
    lblPhone.Text = "500-3333"; 
} 

private void btnShipping_Click(object sender, EventArgs e)  
{  
    lblDepartment.Text = "Shipping";  
    lblContact.Text = "Eric Johnson";  
    lblPhone.Text = "500-4444";  
} 
+0

Не знаю, было ли это так, как вы вставляли его, но в любом из имен методов (или аргументов) нет пробелов – iabbott

+0

Перестройте свой проект и отлаживайте эту кнопку. Нажмите кнопку «Событие», перейдя в пункт «Пойнт», это должно быть легко найти проблема может быть путаной в событии кнопки и событии метки – mojtaba

ответ

0

Вы пробовали вставки Application.DoEvents() заявления в конце каждого метода? Иногда формы очень сложны в обновлении меток, и этот метод заставит форму перерисовать.

+2

В этом сценарии нет причин использовать DoEvents. Я предпочел бы, чтобы OP использовала Invalidate() или Refresh() –

+0

. Как он упомянул, использование TextBox было бы проще, но он должен был использовать метки. Единственный раз, когда я использовал ярлыки, я столкнулся с проблемами и использовал [это] (http://social.msdn.microsoft.com/Forums/vstudio/en-US/beea0c94-fce4-4f49-98e6-9c170e66cda9/change-label- text-in-run-) в качестве моего руководства, которое помогло исправить мой код. Я решил, что, по крайней мере, попытаюсь передать свои ограниченные знания по haha. –

+2

Единственная причина, по которой я прокомментировал то, что я сделал, - это ['DoEvents'] (http://www.codinghorror.com/blog/2004/12/ is-doevents-evil.html) метод может привести вас к неприятностям, я использовал в прошлом и имел проблемы с взаимоблокировками. ИМХО, хорошо не привыкать к его использованию, потому что он подпрыгнет и укусит вас. –

2

Did the project compiled without any errors ?.

По умолчанию каждый обработчик событий в C# объявлен как void, который я не могу найти в вашем коде. Если вы изменили обработчики событий, созданные Visual Studio, если это так, то проблема, с которой вы сталкиваетесь, этого.

Позвольте мне объяснить, что пошло не так;

Всякий раз, когда вы создаете обработчик событий для любого элемента управления, используя окно свойств Visual Studio, ради этого объяснения позвольте мне принять example of TextBox. Предположим, что у вас есть TextBox (с именем textBox1, который по умолчанию), и вы подписаны на его TextChanged Event (сделать это найти TextChanged события в окне событий Visual Studio и дважды щелкните по нему, когда вы делаете, что Visual Studio генерирует это для вас;

private void textBox1_TextChanged(object sender,EventArgs e) 
{ 

} 

Это то, что мы программисты называют Event Handler, теперь найти Solution Explorer Window in Visual Studio нажмите на Form1.Designer.cs, вы получите много кода там, найдите строку, которая говорит

private System.Windows.Forms.TextBox textBox1;

где textBox1 является name.Locate знаком плюс элемента управления выше этой точки, нажмите на него и найдите следующий код;

// 
// textBox1 
// 
this.textBox1.AcceptsReturn = true; 
this.textBox1.Location = new System.Drawing.Point(478, 0); 
this.textBox1.Name = "textBox1"; 
this.textBox1.Size = new System.Drawing.Size(359, 23); 
this.textBox1.TabIndex = 1; 
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); 

PS:The Location , AcceptsReturn , Size and TabIndex property in yours might not be same as mine.

Прочитайте последнюю строчку этого кода, он говорит;

this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); 

где textBox1_TextChanged is the name of event which must be same as that defined in Form1.cs. Если изменить это вы получите различные компиляции ошибки времени.

Итак, теперь, я думаю, вы знаете, что такое связь между Form1.cs (файл основного кода) и Form1.Designer.cs (код за файлом).

В одной строке вывод состоит в том, что удостоверьтесь;

Any event handler function in Form1.cs начинается с частной пустотой .... и слова после частной пустоты точно такого же, как определенно в коде файла для этого конкретного control.If вы хотели бы узнать больше об этом материале, имеют посмотрите here.

Надеюсь, что это помогло бы вам решить проблему. Что-то еще остальное, пожалуйста, сообщите мне.

+0

Они на самом деле делают, в коде, который был отправлен, наблюдается четкий пробел. то есть 'privatevoidbtnMarketing_Click (objectsender, EventArgse)', который должен быть 'private void btnMarketing_Click (отправитель объекта, EventArgs e)', вы можете быть правы, но у ОП должны быть проблемы с компиляцией того, что они разместили. –

+0

@MarkHall, я думаю, они забыли упомянуть ошибку компиляции или что еще может быть причиной? – PurpleXenon

+0

Не знаю, что они замолчали. Им действительно нужно пройти через программу, чтобы увидеть, что происходит. Все, что мы можем придумать в это время, - это чисто гипотеза –

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