Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как посмотреть события для кнопки, В VS 2008 я создал WPF проект на C# 
V
    Опции темы
Lion_Smith
Дата 25.3.2008, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



В VS 2008 я создал WPF проект на C#. Создал кнопку, открыл её свойства в окне Propertis и не обнаружил привычной кнопки с молниями для просмотра событий (Events), которые данная кнопка может генерировать. Меня это очень огорчило. Мне необходимо создать обработчик события  MouseLeftButtonDown. В таком же проекте на VB .Net найти события можно используя раскрывающиеся списки вверху окна с VB .Net кодом и двойным щелчком сгенерировать код нужного тебе события.
А что делать в C#? Двойной щелчёк по кнопке и это всё что дали нам разработчики в Microsoft? А как мне описать события MouseLeftButtonDown?

Это сообщение отредактировал(а) Lion_Smith - 25.3.2008, 12:49
PM MAIL   Вверх
Lion_Smith
Дата 25.3.2008, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



Неужели ни кто не знает? Пипец.. а как вы в VS 2008 программируите?? Или тут все такие мегамозги?
PM MAIL   Вверх
Dennnis
Дата 25.3.2008, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 23.3.2008

Репутация: 1
Всего: 4



Или у тебя VS 2008 кривая или ты тупишь.
--------------------
Get Rich or Die Tryin'
PM   Вверх
Lion_Smith
Дата 25.3.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



VS 2008 скачал из инета с официального сайта Майкрософт, буквально как только её выложили. Может месяца 2 назад, точно не помню!
В простом проекте WindowsForm у меня ни каких проблем нет. А вот в WPF проектах, которые используют фрэймворк 3.5 есть вот такое маленькое неудобство. Читал, где-то что для VS 2005 похожая проблема была, неужели не исправили до сих пор?

В файле приложении лежит снимок окна VS 2008

Присоединённый файл ( Кол-во скачиваний: 26 )
Присоединённый файл  _____WPF_VS_2008.JPG 144,34 Kb
PM MAIL   Вверх
Dennnis
Дата 26.3.2008, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 23.3.2008

Репутация: 1
Всего: 4



Извини, это я ступил smile 
Там реально только одно событие Click, и даже в Xaml'е ничего не пропишешь, если только сам не унаследуешь от System.Windows.Controls.Primitives.ButtonBase и не реализуешь OnMouseMove, OnKeyUp, или чё те надо smile 
--------------------
Get Rich or Die Tryin'
PM   Вверх
Lion_Smith
Дата 28.3.2008, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



Кароче, как было!  smile
Берём VS 2008! Создаём новый WPF проект (хоть оконный, хоть для браузера.. один хрен)!

Как известно технология WPF входит в состав FW 3.0 и выше.. и радует нас тем, что интерфейс (считай всё окно, контролы на этом окне, их способ окрашивания, анимация, расположение, и всякого рода активность/события и свойства, которые в обычном WinForm проекте описывались на C# в файле Form1.Designer.cs) описывается в Window1.xaml на специальном XML подобном языке ориентированном на дизайнера. А код пишется программистом в Window1.xaml.cs. На самом деле очень удобно! smile
Всё бы ни чего! И по уму сделано. Но так как технология сама по себе революционная, то приходится мириться с некоторыми (надеюсь временными) неудобствами.

В частности если раньше с событиями разбираться было просто выбрав в свойствах нужное нам и активировав его двойным щелчком, то теперь надо потратить время на то что бы написать шапку к событию иному чем простой клик, да и клик то иногда не так просто описать.

Вот простой пример:

В новом WPF проете закидываем на форму кнопку button1 и наблюдаем в XAML появление следующей строчки   <Button Height="23" Margin="237.5,133.75,306.25,0" Name="button1" VerticalAlignment="Top">Button</Button>:

Код

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="480" Width="640" Background="Transparent" WindowStyle = "None" AllowsTransparency="True" Loaded="Window_Loaded">
    <Grid>
        <Button Height="23" Margin="237.5,133.75,306.25,0" Name="button1" VerticalAlignment="Top">Button</Button>
</Grid>
    
</Window>



Привычно дважды щёлкаем по этой кнопке и в C# появляется:

Код


private void button1_Click_1(object sender, RoutedEventArgs e)
        {

        }



а если вернуться обратно в XAML, то мы заметим следующее изменение в описании кнопки:

Код

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="480" Width="640" Background="Transparent" WindowStyle = "None" AllowsTransparency="True" Loaded="Window_Loaded">
    <Grid>
         <Button Height="23" Margin="237.5,133.75,306.25,0" Name="button1" VerticalAlignment="Top" 

Click="button1_Click_1"


>Button</Button>

</Grid>
    
</Window>



Теперь мы знаем механизм добавления события к любому элементу WPF при его описании. Правда реализовывать этот механизм для любого другого события придётся ручками.. Гибкость на грани фантастики! Все говорим спасибо разработчикам в Microsoft! smile 

ПРОДОЛЖАЕМ:
Добавим на форму элемент Label и сделаем так, что бы можно было таскать форму за этот самый Label.

1) закидываем на форму Label и наблюдаем в XAML следующую строчку:
 
Код

        <Label Height="28" HorizontalAlignment="Right" Margin="0,177.5,150,0" Name="label1" VerticalAlignment="Top" Width="120">Label</Label>



в ручную добавлем к нему событие 

Код

        <Label Height="28" HorizontalAlignment="Right" Margin="0,177.5,150,0" Name="label1" VerticalAlignment="Top" 


MouseLeftButtonDown="MyCaptionLabel_MouseLeftButtonDown"

Width="120">Label</Label>



и так же в ручную в C# пишем обработчик события:

Код

private void MyCaptionLabel_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            this.DragMove();
        }


Если не знаем как писать правильно обработчик для какого-нибудь события, то его можно создать в WinForms и потом Ctrl+C, Ctrl+V перенести в вашу программу.

Всё! Вот так теперь и выкручиваемся!  
  
PS: Для людей практикующих VB.Net таких сложностей нет. Там всё просто. Почему бы уже не скрестить функциональность окошка кодинга VB с окном кодинга C#, ведь так удобно было бы...

Добавлено через 1 минуту и 37 секунд
Вопрос решён!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0945 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.