Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 481 • Страница 12 из 25<  1 ... 9  10  11  12  13  14  15 ... 25  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
wCat стандартно, как уже сказали - нейм спейс Reflection. И за то спасибо сказать надо, в С++ только через Python/Lua и др. языки :-)

_________________
Ку ку



Партнер
 

Member
Статус: Не в сети
Регистрация: 13.06.2005
Откуда: Украина, Глухов
ладно, спасибо. Reflection так Reflection.

_________________
Что-то начнется, что-то закончится...


 

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 с ними творится тоже самое!!!

http://cp.people.overclockers.ru/cgi-bi ... ation1.zip


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
eisernWolf да есть какой-то компонент, то ли PropertyGrid, толи еще как называется. В MSDN про него написано. Он по свойствам аналогичен студийному :-)

_________________
Ку ку


 

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;

         this.StartPosition = FormStartPosition.CenterScreen;
         this.Text = "Overclockers";
      }
   }
}



Overclocker.cs

Код:

using System;
using System.Diagnostics;

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)
      {
      }

      public OutputListBox(object dataSource, string displayMember, string valueMember, EventHandler selectedIndexChangedHandler)
      {
         Debug.Assert(dataSource != null, "dataSource != null");

         if (dataSource == null)
         {
            throw new ArgumentNullException("dataSource");
         }

         Debug.Assert(displayMember != null, "displayMember != null");

         if (displayMember == null)
         {
            throw new ArgumentNullException(displayMember);
         }

         Debug.Assert(displayMember != "", "displayMember != \"\"");

         if (displayMember == "")
         {
            throw new ArgumentException("The displayMember parameter should not be empty.");
         }

         Debug.Assert(valueMember != null, "valueMember != null");

         if (valueMember == null)
         {
            throw new ArgumentNullException(valueMember);
         }

         Debug.Assert(valueMember != "", "valueMember != \"\"");

         if (valueMember == "")
         {
            throw new ArgumentException("The valueMember parameter should not be empty.");
         }

         this.DataSource = dataSource;
         this.DisplayMember = displayMember;
         this.Dock = DockStyle.Fill;
         this.IntegralHeight = false;
         this.ValueMember = valueMember;

         if (selectedIndexChangedHandler != null)
         {
            this.SelectedIndexChanged += selectedIndexChangedHandler;
         }
      }
   }
}


Editor.cs

Код:
using System;
using System.Drawing;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace ArrayEditor
{
   /// <summary>
   /// Редактор целочисленных значений.
   /// </summary>
   class Editor : UserControl
   {
      private XpButton goButton = null;
      private TextBox textBox = null;

      private int value = 0;

      /// <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();

      public event EventHandler ValueChanged
      {
         add { this.Events.AddHandler(EventValueChanged, value); }
         remove { this.Events.RemoveHandler(EventValueChanged, value); }
      }

      protected virtual void OnValueChanged(EventArgs e)
      {
         EventHandler handler = (EventHandler)this.Events[EventValueChanged];

         if (handler != null)
         {
            handler(this, e);
         }
      }

      protected override Size DefaultSize
      {
         get
         {
            return new Size(100, 21);
         }
      }

      private void goButton_Click(object sender, EventArgs e)
      {
         const string PATTERN = @"^\d+$";

         /*
          * Проверяем, является ли введенная строка числом.
          */

         if (Regex.IsMatch(this.textBox.Text, PATTERN))
         {
            this.Value = int.Parse(this.textBox.Text);
         }
         else
         {
            this.textBox.Text = "Only integers are accepted.";
            this.textBox.SelectAll();
            this.textBox.Focus();
         }
      }

      public Editor() : this(null)
      {
      }
   
      public Editor(EventHandler valueChangedHandler)
      {
         this.textBox = new TextBox();
         this.textBox.Dock = DockStyle.Fill;
         this.textBox.Dock = DockStyle.Fill;
         this.textBox.Parent = this;

         this.goButton = new XpButton("&Edit", new EventHandler(this.goButton_Click));
         this.goButton.Parent = this;

         this.Dock = DockStyle.Top;

         if (valueChangedHandler != null)
         {
            this.ValueChanged += valueChangedHandler;
         }
      }
   }
}


XpButton.cs

Код:

using System;
using System.Diagnostics;
using System.Windows.Forms;

namespace ArrayEditor
{
   /// <summary>
   /// Кнопка в стиле XP.
   /// </summary>
   class XpButton : Button
   {
      public XpButton(string text) : this(text, null)
      {
      }

      public XpButton(string text, EventHandler clickHandler)
      {
         Debug.Assert(text != null, "text != null");

         if (text == null)
         {
            throw new ArgumentNullException(text);
         }

         this.Dock = DockStyle.Right;
         this.FlatStyle = FlatStyle.System;
         this.Text = text;

         if (clickHandler != null)
         {
            ЭТО СПАМ - ОТПРАВЬТЕ ЖАЛОБУ (синий квадрат) += clickHandler;
         }
      }
   }
}


 

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 секунд
Вопрос снят, вручную добавил референс.

_________________
Ку ку


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Daemon писал(а):
Пытаюсь писать Windows Service на .net

Вот уж изврат так изврат! Зачем тебе такое !???


 

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?


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 481 • Страница 12 из 25<  1 ... 9  10  11  12  13  14  15 ... 25  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan