Member
Статус: Не в сети Регистрация: 31.12.2003 Откуда: Н. Новгород
В гравном окне VS 2003 есть панель property. На ней находится очень хороший компонент (таблица) этих свойств. Никто не знает, как прикрутить такую же таблицу к своей программе ? Уж больно он удобен
Member
Статус: Не в сети Регистрация: 24.09.2004 Откуда: Belarus, Mensk
>>как прикрутить такую же таблицу к своей программе
Добавить через Add Item в Toolbox.
_________________ ruSpiegel.net - русское зеркало дотнета
Ваши любимые статьи и блоги, посвященные Microsoft .NET Framework, теперь и на русском языке.
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Народ помогите найти причину глюка. Линк на исходник простого примера этого глюка. Обязательно тестировать на VS 2005 + DevEx XtraGrid3. Видимо всеже глюк этих XtraEditors. На форме обычный Xtras GridControl, подключенный к локальному SQL Server (если у вас он в сети, просто измените connection string). Далее три кнопки. Первая вызывает окно редактирования с обычными WinForms контролами, вторая и третья с XtraEditors контролами. Так вот вторая и треться формы не пашут В моем проекте сейчас просто позарезу надо использовать lookupedit и еще пару очень удобных контролов от DevEx. Аналогичных в стандратном WinForms к сожалению нету. Тут или у меня версия DevEx левая, хотя врядли, или я что-то не так делаю. Даже при открытии примеров от DevEx с ними творится тоже самое!!!
Member
Статус: Не в сети Регистрация: 31.12.2003 Откуда: Н. Новгород
Всем спасибо. С propertygrid я разобрался, но это не совсем то что мне было надо. А надо следующее: есть массив int. Нужно вывести на какой- то компонент все элементы этого массива (каждый со своим именем), чтобы было возможно редактировать каждый из них. При помощи чего это можно сделать ?
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Vinil[NN] писал(а):
При помощи чего это можно сделать
Ну как минимум через текстовые едиторы. Там особой сложности нет. Создаеш в цикле textedit компоненты, даеш им имена в виде "te_"+ i.ToString(), где i это переменная цикла. После чего все это дело редактируеш и дальше просто пробегаешся по списку компонентов формы и забираеш оттуда данные.
Member
Статус: Не в сети Регистрация: 24.09.2004 Откуда: Belarus, Mensk
MainForm.cs
Код:
using System; using System.Diagnostics; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms;
namespace ArrayEditor { /// <summary> /// Главная форма приложения. /// </summary> class MainForm : Form { /// <summary> /// Используется для редактирования количества постов. /// </summary> private Editor editor = null;
/// <summary> /// Используется для организации просмотра элементов массива. /// </summary> private OutputListBox listBox = null;
/// <summary> /// Содержит список оверклокеров. /// </summary> private ArrayList overclockers = null;
private void listBox_SelectedIndexChanged(object sender, EventArgs e) { /* При выделении какого-либо оверклокера, отображаем количество его постов. */ if (this.listBox.SelectedIndex >= 0) { this.editor.Value = (int)this.listBox.SelectedValue; } }
private void editor_ValueChanged(object sender, EventArgs e) { if (this.listBox.SelectedItem != null) { Debug.Assert(this.listBox.SelectedItem is Overclocker, "this.listBox.SelectedItem is Overclocker");
if (!(this.listBox.SelectedItem is Overclocker)) { throw new ArgumentException( string.Format("The this.listBox.SelectedItem should be of type {0} instead of {1}.", typeof(Overclocker), /* {0} */ this.listBox.SelectedItem.GetType() /* {1} */ ) ); }
/* При изменении значения количества постов, правим экземпляр класса Overclocker. */ Overclocker overclocker = (Overclocker)this.listBox.SelectedItem; overclocker.Posts = this.editor.Value; } }
public MainForm() { this.overclockers = new ArrayList();
/* Загоняем в коллекцию несколько оверклокеров. */ this.overclockers.Add(new Overclocker("Вася", 0xF)); this.overclockers.Add(new Overclocker("Федя", 0xFF)); this.overclockers.Add(new Overclocker("Петя", 0xFFF));
this.listBox = new OutputListBox( this.overclockers, "Name", "Posts", new EventHandler(this.listBox_SelectedIndexChanged) ); this.listBox.Parent = this;
this.editor = new Editor(new EventHandler(this.editor_ValueChanged)); this.editor.Parent = this;
namespace ArrayEditor { /// <summary> /// Инкапсулирует информацию об оверклокере. /// </summary> class Overclocker { private string name = "";
/// <summary> /// Возвращает имя оверклокера. /// </summary> public string Name { get { return this.name; } }
private int posts = 0;
/// <summary> /// Количество постов у оверклокера. /// </summary> public int Posts { get { return this.posts; } set { this.posts = value; } }
public override string ToString() { return string.Format("Overclocker {0} has {1} posts.", this.Name, this.Posts); }
public Overclocker() : this("Bot") { }
public Overclocker(string name) : this(name, 0) { }
public Overclocker(string name, int posts) { Debug.Assert(name != null, "name != null");
if (name == null) { throw new ArgumentNullException("name"); }
Debug.Assert(name != "", "name != \"\"");
if (name == "") { throw new ArgumentException("The name parameter should not be empty."); }
Debug.Assert(posts >= 0, "posts >= 0");
if (posts < 0) { throw new ArgumentException("The posts parameter should be greater than or equal to zero."); }
this.name = name; this.posts = posts; } } }
OutputListBox.cs
Код:
using System; using System.Diagnostics; using System.Windows.Forms;
namespace ArrayEditor { /// <summary> /// Используется для вывода элементов коллекции на экран. /// </summary> class OutputListBox : ListBox { public OutputListBox(object dataSource, string displayMember, string valueMember) : this(dataSource, displayMember, valueMember, null) { }
/// <summary> /// Текущее значение. /// </summary> public int Value { get { return this.value; } set { this.value = value; this.textBox.Text = value.ToString(); this.OnValueChanged(EventArgs.Empty); } }
private static readonly object EventValueChanged = new object();
Member
Статус: Не в сети Регистрация: 10.03.2004 Откуда: Минск
Как можно сделать следующее:
Есть Gridview (или Datagrid, не важно), заполненый из БД. Есть столбец с кнопкой "дополнительная информация". Нужно, чтобы при нажатии на кнопку ниже рядка, в котором она была нажата, вставлялась фомочка с этой информацией, а снизу от неё собственно продолжался сам Gridview. Как такое реализовать? Тупая идея удалять этот gridview и создавать вместо него 2 (выше и ниже этой формочки). Но это нелогично. Т.к. это web-приложение, то желательно так же сделать это средствами javascript. Заранее спасибо.
Member
Статус: Не в сети Регистрация: 31.12.2003 Откуда: Н. Новгород
eisernWolf Фигасе написал . Но это не совсем то, что мне надо. Я бы хотел, чтобы число можно было вводить и оно отображалось около каждого поля. Это, конечно, тоже можно сделать ручками, но очень муторно.
Я тут подумал, и понял, что мне достаточно propertygrig. Вот только появился вопрос: В VS в propertygrid все свойства разделены на группы, и у каждого внизу есть подсказка, для чего нужно это свойство. Никто не знает, как сделать так же?
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
Пытаюсь писать Windows Service на .net, но есть следующая проблема - нету неймспейса System.Configuration.Install, VS2005. Это так и должно быть, или это только у меня так? Добавлено спустя 59 минут, 9 секунд Вопрос снят, вручную добавил референс.
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
Ray Adams были мысли, есть процесс, который желательно было бы сделать сервисом, ну и чтобы он при надобности (запуск с определенным ключем) запускал клиентскую форму, вообщем пока я отложил эту задумку, потом если будет время реализую все по-божески
Member
Статус: Не в сети Регистрация: 24.09.2004 Откуда: Belarus, Mensk
Daemon Посмотри FAQ по Windows Forms на GotDotNet.ru. Там описывается, как реализовать то, что тебе нужно без сервисов и по-божески (статья вида "Как поместить иконку в System Tray" или подобная ей).
_________________ ruSpiegel.net - русское зеркало дотнета
Ваши любимые статьи и блоги, посвященные Microsoft .NET Framework, теперь и на русском языке.
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
eisernWolf нет, тут вся суть в сервисе. Может и дико звучит, но - написал драйвер (перехватывает NDIS ф-ции, а потом и нужные ф-ции протоколов по-типу ProtocolReceive, ProtocolTransferData etc.) - нужно сделать клиентское приложение/сервис, который будет выводить статистику и подгружать правила фильтрации (фильтрацию пока не реализовал, статистику уже собираю), так вот решил писать на .net. Вообщем данные между .net и драйвером передаю через прокси dll на сипп. В чем вся суть, правила подгружать должен сервис, ибо приложение может стартовать только при запуске, а во время того же логон скрина - драйвер работает без правил.
Member
Статус: Не в сети Регистрация: 28.12.2003 Откуда: Vladivostok
Товарищи, а надо бы запускать программу ДО окошка с логином и паролем (т.е. загружается система, потом появляется мое окно, потом появляется окно Нажмите контрл альт дел для продолжения...).
Пытался писать сервис на вб.нет 2003. но он появляется уже после загрузки всей системы. Нельзя ли как-нибуть по быстрее его запускать? ковыряние в реестре в приоритетах групп ничего не дало
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Daemon Ну так напиши эту часть на Delphi, тем более там есть нормальная возможность для создания сервисов, а саму прогу на C# и все
Vlad_Diver писал(а):
Товарищи, а надо бы запускать программу ДО окошка с логином и паролем (т.е. загружается система, потом появляется мое окно, потом появляется окно Нажмите контрл альт дел для продолжения...).
Поясни точнее, что ты пытаешся сделать. Logon окошко?
Vlad_Diver писал(а):
Пытался писать сервис на вб.нет 2003. но он появляется уже после загрузки всей системы. Нельзя ли как-нибуть по быстрее его запускать? ковыряние в реестре в приоритетах групп ничего не дало
Проверь настройку сервиса, а точнее его StartUp Mode.
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
Ray Adams больше никакого Delphi , я еще раз все обдумал, и понял, что сервис прийдется писать на С++, потому как на .net - не секьюрно, можно легко завалить процесс, правда прийдется отказатся от идеи использования ADO (для хранения правил). Впринципе демонстрационная часть уже готова, всем пока занимается клиентское приложение, могу собственно и показать
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Daemon писал(а):
больше никакого Delphi Smile, я еще раз все обдумал, и понял, что сервис прийдется писать на С++
Собственно какая нафиг разница? Это ведь не Delphi+ C#.
Daemon писал(а):
правда прийдется отказатся от идеи использования ADO (для хранения правил).
Правила можно хранить в XML через тот же ADO и писать опять же на Delphi. У нас на работе много сервисов и все они написаны на Delphi. Пока проблем небыло никаких. Все одно ведь Win32 приложение получается. Добавлено спустя 3 минуты, 22 секунды
Ray Adams писал(а):
всем пока занимается клиентское приложение
А чем оно вообще занимается то? И почему писал именно под .NET?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения