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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запрет изменения состояния checkbox, запрет изменения состояния checkbox 
V
    Опции темы
Perun
Дата 24.11.2009, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



нужно запретить(при этом Enable=true) состояние checkbox'ов только для отображения
информации. Если условиевыполняется, то программно ставятся или соответственно не ставятся галочки
PM MAIL ICQ   Вверх
explorer
  Дата 24.11.2009, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



У чекбокса есть свойство AutoCheck. Поставь в False и сможешь сам программно ставить галочки. При клике по чекбоксу галочка ставится не будет. Надеюсь, ответил на твой вопрос smile
--------------------
 
PM MAIL WWW ICQ   Вверх
Perun
Дата 24.11.2009, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Благодарю,
но я так и сделал
Только оно отображается как-то.... не очень. При нажатии появляется и исчезает
ну или наоборот(как код написал).
Вот думал другой вариант есть.
PM MAIL ICQ   Вверх
explorer
Дата 24.11.2009, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Это уже может быть проблема в коде. Причем не в коде чекбокса. Сам сталкивался с таким поведением. Выяснилось, что у меня дважды вызывался программный клик.
--------------------
 
PM MAIL WWW ICQ   Вверх
Perun
Дата 24.11.2009, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



кода ещё нет
Я поставил  false. Пробую нажать на него - вышеописанные симптомы
PM MAIL ICQ   Вверх
explorer
Дата 25.11.2009, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Сам попробовал сегодня. На чистую форму кинул checkbox. Поставил AutoCheck в false. Все работает хорошо. Проверяй лучше. Само по себе мигать оно не может. Что-то его дергает. 
--------------------
 
PM MAIL WWW ICQ   Вверх
Perun
Дата 25.11.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



хорошо попробую
PM MAIL ICQ   Вверх
Perun
Дата 25.11.2009, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



не могу послать свой утиль!
показал бы
PM MAIL ICQ   Вверх
explorer
Дата 25.11.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Попробуй создать чистый проект, добавь на форму только CheckBox и посмотри, как он будет себя вести. В зависимости от результата решим, что делать дальше smile
--------------------
 
PM MAIL WWW ICQ   Вверх
Perun
Дата 1.12.2009, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



сделал проект, chb Autocheck = false
запускаю - на пустом чеке жмёшь быстро появляется галочка потом исчезает
PM MAIL ICQ   Вверх
explorer
Дата 2.12.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как вариант, можно пошаманить с событием Click. Например, при клике сбрасывать галочку в любом случае, а потом выставлять по мере надобности.
--------------------
 
PM MAIL WWW ICQ   Вверх
Perun
Дата 2.12.2009, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ok попробую.
Шаманство великая вещь! Но компонет должен работать и сам хорошо
PM MAIL ICQ   Вверх
Perun
Дата 2.12.2009, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



слушай, я понимаю, что это уже другая тема,но у меня есть  вопрос. Я тут ветку создал,но никто не отвечает.
У меня такая задача:надо чтобы по команде(н-р клик)
в контекстное меню файлов(любое расширение) встраивалось моё контекстное меню
Как винрар или 7-zip. Только на несколько уровней вложенности - 3.Я пока только 2 сделал
На основании этих статей
1)http://www.theserverside.net/articles/showarticle.tss?id=ShellExtensions
2)http://www.gotdotnet.ru/blogs/gaidar/6487/
PM MAIL ICQ   Вверх
explorer
Дата 10.12.2009, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Т. е. я так пнимаю, нужно отловить вызов контекстного меню и вставить туда своё? Ты уже сделал на 2 уровня, так? А что мешает при щелчке на втором уровне перехватывать его вызов и вставлять туда 3-ий урвень?  Я понятно написал. А-то конец дня рабочего smile 

А что с CheckBox? Проблема остается?
--------------------
 
PM MAIL WWW ICQ   Вверх
Perun
Дата 11.12.2009, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

Т. е. я так пнимаю, нужно отловить вызов контекстного меню и вставить туда своё? Ты уже сделал на 2 уровня, так? А что мешает при щелчке на втором уровне перехватывать его вызов и вставлять туда 3-ий урвень?  Я понятно написал. А-то конец дня рабочего

Если есть вариант пообщаться через асю, пожалуйста- 445708719
1.дело в том, что я сделал своё меню, прочитав статьи про расширения оболчек.
Компилирую проект у меня появляется встроенное меню! Ура, вроде всё работает!(в настройках стоит галочка Register for COM Interop).
Мне надо управлять этим процессом - я создал формочку простую 2 кнопки. 1 регистрирует мою  библиотеку, 2 отменяет.
использую RegisterService.Register menu.dll/Unregister menu.dll.
На моей машине работает, только после компиляции проекта.
На клиентских вообще не работает! В реестр прописываются мои ветки, но меню не появляется. Обидно (.
В форуме уже 2 темы создал по этому вопросу - никто не отвечает.
Пробовал свою библиотеку через regsvr32.ехе использовать - пишет ошибку, что не удалось найти точку входа DllRegisterServer().
Но она есть в тексте. Мне сказали, что библиотеки .net регистрируются через команду 
RegisterService.Register (неправильно пишу - не проекта под рукой).Так и сделал на тестовой форме!

Сделал вывод, что не регистрирую свой COM сервер.  Как это делает студия мне непонятно. 
Почему всё работает с включенной галочкой Register for COM Interop? Как это сделать программно?
Вопрос открыт.
2. CheckBox пока не победил (.
скинь свою формочку с чекбоксом пожалуйста, может у меня проблемы просто
PM MAIL ICQ   Вверх
Perun
Дата 12.12.2009, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



мне ещё подсказали, что нужно установить свойство COMVisible объекта класса в true
где это и как сделать.
Глянь на прикреплённые файлы

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  ShellExtensionC_.rar 13,40 Kb
PM MAIL ICQ   Вверх
explorer
Дата 15.12.2009, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я тебе по секрету скажу, что все public классы идут по умолчанию как ComVisible(true). Так что дело тут не в этом. Регестировать нужно немного иначе.

Я работаю с COM'ом постоянно. Причина того, что "у тебя работает, а у других нет" в том, что ты поставил галочку у "Register for Com interop". Так вот, что делает эта фича smile Делает она 2 вещи. 
1) Вызывает tlbExp и получает из твоего COM-сервера tlb файл. Он является библиотекой типов (в нём описано все, что нужно COM, чтобы работать с твоими типами). Затем эта tlb-шка регестрируется в реестре. Типы данных зарегестрированы. Но все еще работать не будет, т.к. мы "не знаем", где лежит наш сервер (твоя  менюшка). 

2) Для этого вызывается утилита gacutil с ключем -i (установить). Эта штука помещает твою dll с сервером в Global Assembly Cache (GAC). Слыхал о таком? Так вот , теперь система однозначно знает, где брать твой сервак (все сборки .Net сначала ищутся в GAC. Правда тут одно но. Для регисрации в GAC сборка должна быть подписана, т.е. должен быть файл с ключем. Это можно легко сделать в настройках проекта. После этого, твой сервер будет доступен. 

Самый простой способ воспроизвести весь порядок действий на целевом компе - это содать еще один проект в том же солюшене. Проект установщика твоего сервера. Работать с установщиом достаточно просто, если тебе нужно все стандартное. В твоем случае этого будет достаточно. ТАк вот, указываешь установщику, что твою dll нужно регистрировать как COM и все. 
--------------------
 
PM MAIL WWW ICQ   Вверх
explorer
Дата 15.12.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

echo off
tlbExp yourComServer.dll /silent > install.log

gacutil /i yourComServer.dll >> install.log

echo Registering Dll as COM-object >> install.log

c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm.exe yourComServer.dll /tlb:yourComServer.tlb >> install.log
echo Installation complete. See install.log for details.
pause



Работать будет при условии, что путь к tlbExp и gacutil прописан в Path. Иначе надо полный путь к ним указывать.

Это сообщение отредактировал(а) explorer - 15.12.2009, 11:24
--------------------
 
PM MAIL WWW ICQ   Вверх
Perun
Дата 15.12.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



можешь попробовать мою dll? что-то не так делаю

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  MENU.dll 28,00 Kb
PM MAIL ICQ   Вверх
Perun
Дата 15.12.2009, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



почему-то пишет недопустимый формат файла menu.dll?
вроде всё правильно сделал:
Код

echo off
tlbExp menu.dll /silent > install.log

gacutil /i menu.dll >> install.log

echo Registering Dll as COM-object >> install.log

c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm.exe menu.dll /tlb:menu.tlb >> install.log
echo Installation complete. See install.log for details.
pause

PM MAIL ICQ   Вверх
explorer
Дата 16.12.2009, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот что мне вернуло:
Код

Microsoft (R) .NET Global Assembly Cache Utility.  Version 2.0.50727.42
Copyright (c) Microsoft Corporation.  All rights reserved.

Failure adding assembly to the cache: Attempt to install an assembly without a strong name
Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.1434
Copyright (C) Microsoft Corporation 1998-2004.  All rights reserved.

Types registered successfully
Type library exporter warning processing 'ShellExt.StartupInfo, MENU'. Warning: The reference type had sequential or explicit layout, and so was exported as a struct.
Type library exporter warning processing 'ShellExt.ProcessInformation, MENU'. Warning: The reference type had sequential or explicit layout, and so was exported as a struct.
Assembly exported to 'd:\debug\menu.tlb', and the type library was registered successfully



Все эти предупреждения не критичны, кроме того, что сбора не подписана: Failure adding assembly to the cache: Attempt to install an assembly without a strong name. В свойсвах проекта зайди на вкладку Signing и создай ключ. Потом только все зарегистрируется. И еще, т.к. запускать скрипт установочный нужно от имени администратора, то может понадобиться указание путей. Например вот так: 

Код

echo off
tlbExp d:\debug\menu.dll /silent > d:\debug\install.log
gacutil /i d:\debug\menu.dll >> d:\debug\install.log
echo Registering Dll as COM-object >> install.log
c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm.exe d:\debug\menu.dll /tlb:d:\debug\menu.tlb >> d:\debug\install.log
echo Installation complete. See install.log for details.
pause

--------------------
 
PM MAIL WWW ICQ   Вверх
Perun
Дата 16.12.2009, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Сделал подпись - родился сертификат menu.pfx. Скомпилировал проект.
Что-то не учёл опять 
файлы tlbExp и gacutil поместил в папку с bat-файлом 
На tlbexp получил ошибку


Код

echo off
tlbExp C:\FrontLine\menu.dll > install.log

gacutil /i C:\FrontLine\menu.dll >> install.log
echo Register Dll as COM-jbject >> install.log
C:\Windows\Microsoft.NET\Framework\v.2.0.50727\regasm.exe C:\FrontLine\menu.dll /tlb:C:\FrontLine\menu.tlb >> install.log
rem echo Install complete
pause


Добавлено через 13 минут и 24 секунды
забыл ошибку приложить. 
В архиве моя обновлённая dll с подписью и картинка ошибки. Я в командной строке
пытался проверить tlbExp. 
Может у меня с tlbExp что-то не так.
Разве я должен с собой её везде таскать. 
В тестовой системе я не обнаружил файла tlbExp и gacutil поэтому докинул их в папку

Попробуй пожалуйста ещё раз

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  DLL.rar 85,82 Kb
PM MAIL ICQ   Вверх
Perun
Дата 16.12.2009, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



вот содержимое папки
....
tlbExp взял из папки C:\Windows\SDKs\Windows\v6.0A\bin
gacutil из папки frameworka ..v.1.1.4322

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  2.JPG 39,48 Kb
PM MAIL ICQ   Вверх
explorer
Дата 18.12.2009, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ты не поверишь smile Попробовал у себя, все зарегилось без проблем. Высылаю тебе архив с твоей dll  и всем необходимым. 

Это сообщение отредактировал(а) explorer - 18.12.2009, 09:57

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  debug.rar 79,56 Kb
--------------------
 
PM MAIL WWW ICQ   Вверх
Perun
Дата 18.12.2009, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



РАБОТАЕТ!!!!!
чтобы всё удалить, ключи /u поставить надо в другом батнике??

PM MAIL ICQ   Вверх
Perun
Дата 18.12.2009, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



как спасибо сказать?
PM MAIL ICQ   Вверх
explorer
Дата 18.12.2009, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо можно и так, ты это, в принципе, уже сделал smile 

Как удалить:

Код

echo off
gacutil /u d:\debug\menu.dll >> d:\debug\install.log
regasm.exe d:\debug\menu.dll /unregister
erase menu.tlb
pause


А вот насчет галочки в CheckBox все же сомнения у меня... Ты какой фреймворк используешь? 2.0 или выше (и не бету ли какую)? 
--------------------
 
PM MAIL WWW ICQ   Вверх
Perun
Дата 21.12.2009, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



VisualStudio 2008 FrameWork 3.5
В свойсвах проекта пробовал 2,0 ставить - не то
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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