Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > "Ламерские" вопросы


Автор: Arun 4.4.2008, 17:11
Люди, подскажите.
Гоняю в С#.NET пару дней.
Что в этом коде не так?

Код

using System;

namespace myNameSpace 
{

public class MyInteger {
    MyInteger(string a){
            inta = int.Parse(a);
    }
    private int inta;
    public int Inta {
        get {return inta;}
        set {if (value < 0) inta = 0; else inta = value;}
    }
}

public class Program {
    static void Main(string[] args)
    {

                        MyInteger mi = new MyInteger("34");

        Console.WriteLine(mi.Inta);
        Console.ReadKey();
    }
}
    
}


по идее на консоль должно быть выведено число 34.
Однако при компиляции идет ругань: 'myNameSpace.MyInteger' does not contain a constructor that takes '1' arguments (CS1729)
на строчку 

Код

MyInteger mi = new MyInteger("34");

Автор: v2v 4.4.2008, 17:16
Код

public MyInteger(string a)

Автор: Arun 4.4.2008, 17:18
v2v

Тьфу-ты, точно))) Приватный конструктор получился.
Спасибо!!!

Автор: Naom 7.4.2008, 13:02
простейший вопрос, жму кнопку, из текст бокса текст вставляецца в ричтекстбокс, жму еще раз он добовляецца, а как сделать чтоб с новой строки шел.. мой код:
Код

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 richTextBox1->Text=(richTextBox1->Text)+(textBox1->Text);
             }


усо разобрался сам =))) надо так:
Код

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 richTextBox1->Text=(richTextBox1->Text)+(textBox1->Text)+"\n";
                 textBox1->Text="";
             }


=)) но теперь появляецца вопрос, как при нажатии на кнопку Enter сробатывало тоже что и принажатии на буттон1?

Автор: masterik 7.4.2008, 23:27
Цитата(Naom @  7.4.2008,  13:02 Найти цитируемый пост)
=)) но теперь появляецца вопрос, как при нажатии на кнопку Enter сробатывало тоже что и принажатии на буттон1?


Сделай button1 кнопкой по умолчанию для твоей формы
Код

form.AcceptButton = button1;


Для большей уверенности можно добавить
Код

textBox1.AcceptsReturn = false;

Хотя это значение по умолчанию

Если button1 нельзя определить как AcceptButton, то перехватывай textBox1.KeyPress (http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.keypress.aspx)

Не знаю возможно это в С++ или нет, но можно оптимизировать/упростить твой код:
Код

richTextBox1.Text += textBox1.Text + "\n";

Автор: Naom 8.4.2008, 13:15
спс =) 
Код

this->AcceptButton = this->button1;


и эт тоже работает, немного добавил =)
Код

                 if (textBox1->Text->Length > 0)
                 {
                 richTextBox1->Text += textBox1->Text + "\n";
                 textBox1->Text="";
                 }


теперь было б хорошо если б я мог узнать время =)) чтоб перед текстом вставлялось время добавления текста в ричтекст бокс

Автор: masterik 8.4.2008, 14:12
Цитата(Naom @  8.4.2008,  12:15 Найти цитируемый пост)
теперь было б хорошо если б я мог узнать время =)) чтоб перед текстом вставлялось время добавления текста в ричтекст бокс 

Код

richTextBox1.Text += string.Format("{0}: {1}\n", DateTime.Now.ToString("t"), textBox1.Text);


http://msdn2.microsoft.com/en-us/library/zdtaw1bw.aspx - Формат даты, времени можешь выбрать сам.

Автор: Naom 8.4.2008, 15:02
На С++ эт выглидит так:

Код

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 if (comboBox1->Text->Length >0){
                    if (textBox1->Text->Length > 0)
                    {
                        richTextBox1->Text +=comboBox1->Text+" ("+DateTime::Now.ToString("HH:mm:ss")+"): " +textBox1->Text + "\n";
                        textBox1->Text="";
                    }
                 }
             }


эт у мя типа список пользователей =)))
Код

comboBox1->Text


может эт как-то можно оптимизировать? =)

Автор: masterik 8.4.2008, 16:13
Цитата(Naom @  8.4.2008,  14:02 Найти цитируемый пост)
может эт как-то можно оптимизировать? =) 

Единственное что могу посоветовать, собирай текст для добавления в RichTextBox с помощью StringBuilder.

Код

 if (comboBox1.Text.Length > 0 && textBox1.Text.Length > 0)
{
     System.Text.StringBuilder sb = new System.Text.StringBuilder();
     sb.Append(comboBox1.Text);
     sb.Append(" (");
     sb.Append(DateTime.Now.ToString("HH:mm:ss")); // Можно заменить на DateTime.Now.ToString("T", CultureInfo.InvariantCulture);
     sb.Append("): ");
     sb.Append(textBox1.Text);
     sb.AppendLine();
     richTextBox1.Text += sb.ToString();
     textBox1.Text = "";
}


При небольшом количестве изменений (добавлений в ричтекстбокс) разницы можешь и не почувствовать... но не забывай, что string в .NET является immutable типом!

Автор: Naom 8.4.2008, 17:49
гуд, срс за подсказку

Добавлено через 3 минуты и 42 секунды


а как при зАкрытии формы сохранить все не в одной строке... 

Код

            String^ fileName = "Log.txt";

            StreamWriter^ sw = gcnew StreamWriter(fileName);
            sw->WriteLine("Файл создан {0}",DateTime::Now);
            sw->WriteLine("Имя пользователя : {0}",comboBox1->Text);
            sw->WriteLine(richTextBox1->Text);
            sw->Close();

Автор: masterik 8.4.2008, 23:41
Вырезка из мсдн http://msdn2.microsoft.com/en-us/library/system.windows.forms.richtextbox.text.aspx:
Цитата

To display multiple lines of text in a RichTextBox, set the Multiline property to true. To read or set the text of a multiline text box, use the Lines property. The Text property does not return any information about the formatting applied to the contents of the RichTextBox. To get the rich text formatting (RTF) codes, use the Rtf property.


Тебе нужно либо использовать Lines, либо писать в файл с помощью http://msdn2.microsoft.com/en-us/library/system.windows.forms.richtextbox.savefile.aspx

Автор: Naom 9.4.2008, 09:53
чтот до конца, не могу понять этот код

Код

    String* tempArray[] = new String*[richTextBox1->Lines->Length]; //<=== Эт нада в глобальных значениях написать да?
    tempArray = richTextBox1->Lines; //<=== эт я не понимаю =) 
 
    // Loop through the array and send the contents of the array to debug window.
    for(int counter=0; counter <= tempArray->Length;counter++) //<=== Эт типа пока коунтер меньше или равно длине арроу 
    {
       System::Diagnostics::Debug::WriteLine(tempArray[counter]); //<=== В дебагере пишет значения определенного номер арей
    }


Правильно? =)

П.С. Array, по русски то как будет? массив? список значений?

Автор: zackaz 10.4.2008, 19:51
Еще один ламерский: кто знает аналог sendkey, только для неактивного окна?

Автор: masterik 11.4.2008, 14:06
Цитата(zackaz @  10.4.2008,  18:51 Найти цитируемый пост)
кто знает аналог sendkey, только для неактивного окна? 


Код

public static class Win32
{
    public enum VK : int
    {
        DOWN = 0x28,
        UP = 0x26,
        LEFT = 0x25,
        RIGHT = 0x27
        // .....
    }
    public enum WM
    {
        KEYUP = 0x0101,
        KEYDOWN = 0x0100
        // .....
    }

    [System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
    public static extern int SendMessage(IntPtr hWnd, WM Msg, int wParam, int lParam);
}


Пример использования:
Код

Win32.SendMessage(controlInstance.Handle, Win32.WM.KEYDOWN, (int)Win32.VK.UP, 0);
Win32.SendMessage(controlInstance.Handle, Win32.WM.KEYUP, (int)Win32.VK.UP, 0);

Автор: zackaz 11.4.2008, 16:17
masterik, ты уж прости, но тут раздел програмирования дотнет, а не Win32 API!!!! Это я знаю и применяю когда програмирую на С++, а вот прямо сейчас мне необходимо, чтто бы все работало на разных конфигурациях, где есть дотнет или моно.

Автор: Crashoverwide 25.4.2008, 04:22
День добрый!
Заранее прошу прощения за ламерский вопрос, но, то ли лыжи не едут, то ли я....
Есть строка:
Код

str1 = "111222qwerty";

Нужно из нее взять первые 6 символов в str2, т.е. str2 должна быть - "111222".
Пробовал так:
Код

string str2 = Left(str1,6);

Но ничего не получается.. :-(
Да и ошибка какая-то подозрительная выходит: "The name 'Left' does not exist in the current context".

Автор: v1rtu0z 25.4.2008, 07:46
делай так:
Код

string str2 = strl.Substring(0,6);

Автор: Crashoverwide 25.4.2008, 08:11
to v1rtu0z:
ОГРОМНОЕ СПАСИБО !

Автор: Remiznik 25.4.2008, 13:38
Код

Console.WriteLine(" Vvedite koeficient massi ");
Console.ReadLine(d);


выдаёт ошибку error CS1501: No overload for method 'ReadLine' takes '1' arguments[code=csharp]


Автор: Ram1reS 25.4.2008, 16:29
Цитата(Remiznik @ 25.4.2008,  13:38)
Код

Console.WriteLine(" Vvedite koeficient massi ");
Console.ReadLine(d);


выдаёт ошибку error CS1501: No overload for method 'ReadLine' takes '1' arguments[code=csharp]

Делай так:
Код

Console.WriteLine(" Vvedite koeficient massi ");
string koefMass = Console.ReadLine();

Автор: Remiznik 25.4.2008, 20:45
Цитата(Ram1reS @ 25.4.2008,  16:29)
Цитата(Remiznik @ 25.4.2008,  13:38)
Код

Console.WriteLine(" Vvedite koeficient massi ");
Console.ReadLine(d);


выдаёт ошибку error CS1501: No overload for method 'ReadLine' takes '1' arguments[code=csharp]

Делай так:
Код

Console.WriteLine(" Vvedite koeficient massi ");
string koefMass = Console.ReadLine();

да только мне число нужно получить для по следуюшей работы я здела так 
Код

Console.Write(" Vvedite koeficient massi ");
string s;
s=Console.ReadLine();
int num;
int.TryParse(s, out num);
d=num;

конечно топрно и не экономично но я новичок и я себе это простил и пока это работает ))

Автор: Ram1reS 25.4.2008, 22:49
[QUOTE=Remiznik,25.4.2008,  20:45][QUOTE=Ram1reS,25.4.2008,  16:29]
Цитата(Remiznik @ 25.4.2008,  13:38)
[code=csharp]
да только мне число нужно получить для по следуюшей работы я здела так 
Код

Console.Write(" Vvedite koeficient massi ");
string s;
s=Console.ReadLine();
int num;
int.TryParse(s, out num);
d=num;

конечно топрно и не экономично но я новичок и я себе это простил и пока это работает ))

Можно сократить так:

Код

Console.Write(" Vvedite koeficient massi ");
int num = int.TryParse( Console.ReadLine() );

Автор: Remiznik 25.4.2008, 23:37
да спасибо это гораздо удобнее )

Автор: TBase 30.4.2008, 23:32
Здраствуйте, добавлю свой ламерский вопрос в копилку:

Как отследить нажатие Ctrl + MouseClick на контролле?

Автор: mr.DUDA 1.5.2008, 20:17
Обработать MouseDown и сравнить Control.ModifierKeys с Keys.Control.

Автор: TBase 3.5.2008, 00:55
mr.DUDA, спасибо....

Автор: Crashoverwide 4.5.2008, 08:43
День добрый!

Подскажите, пожалуйста, возможно ли в "numericUpDown", когда числа до 10 (т.е. от 0 до 9 включительно) сделать, чтобы в нем было не "1", а "01"; не "2", а "02" и т.д.
Просто делаю в программе что-то типа таймера. Хотелось, чтобы можно было выставить время "01:09", а не "1:9"...

Автор: contramundum 4.5.2008, 11:05
привет всем!
вроде-бы простой вопрос:
как конветнуть integer в hex чтоб выглядело типо так:
integer=02 -----> hex=02
integer=69 -----> hex=69
ну то есть чтоб менялась тока система счисления, а цифры в числе оставались (буквы не нужны) smile 
пробую делать вот так:
Код

Dim time As String = 66
Dim curtime() As Byte = {CByte(Hex$(time)), &H77}
' выдает 2А 77
' а надо 66 77

КАК?!?!?!?!! smile 

Автор: contramundum 4.5.2008, 14:21
пока вышел из положения так:
Код

Dim time1 As Integer
        Dim time2 As Integer
        Dim time3 As Integer
        Dim time4 As Integer
' в контролах NumericUpDownX можно выбрать только 1 цифру
        time1 = CInt(Hex$(NumericUpDown1.Value)) * &H10
        time2 = CInt(Hex$(NumericUpDown2.Value))
        time3 = CInt(Hex$(NumericUpDown3.Value)) * &H10
        time4 = CInt(Hex$(NumericUpDown4.Value))
        Dim time5 As Byte = CByte(time1 + time2)
        Dim time6 As Byte = CByte(time3 + time4)
' *****
 Dim curtime() As Byte = {time5, time6}
' *****

я понимаю, что это очень громоздко, некрасиво и вообще идиотизм, тем-более, что нужно таким макаром вбить довольно много значений smile 
памагитеееееее!!! smile 

Автор: mr.DUDA 5.5.2008, 10:48
contramundum
Код
        Dim i As Integer
        Dim str As String
        i = 12345
        str = Convert.ToString(i, 16)


Автор: contramundum 5.5.2008, 16:31
Код

Dim i As Integer
Dim str As String
i = 12345
str = Convert.ToString(i, 16)


mr.DUDA, да, спасибо, но это не то! В этом случае "12345" из десятичной системы счисления просто переводится в шестнадцатиричную (правильно написал? smile ), а мне нужно, чтоб "12345" в десятичной переводилось в "12345шестнадцатеричнойsmile 
П. С.: ...правда теперь это уже не актуально, ибо я использую свой метод, показаный выше...
или так (в моем случае надо двузначное десятичное число перевести в двузначное шестнадцатиричное (байт) с такими-же цифрами, так как пишу в ком-порт, а устройство воспринимает числа "так как есть" то есть вбиваем в форме "23" в десятичной - ибо не знаю как вводить сразу шестнадцатиричные -,  конвертим и посылаем "23" в шестнадцатиричной в ком-порт - на устройстве получаем "23" в десятичной (или хз в какой оно там выдает, но цифры те-же и это не важно) smile ):
Код

  Dim dateday As Byte = CByte(CInt(Hex$(dateday1.Value)) * &H10 + CInt(Hex$(dateday2.Value)))


Автор: Jasmine 6.5.2008, 14:00
А кто знает где можно почитать описание FCL на русском языке ... может быть хотябы основные пространства имен 

Автор: mr.DUDA 6.5.2008, 17:46
Цитата(Jasmine @  6.5.2008,  14:00 Найти цитируемый пост)
 где можно почитать описание FCL на русском языке ... может быть хотябы основные пространства имен 

Русский MSDN: http://msdn.microsoft.com/ru-ru/default.aspx

Автор: Jasmine 6.5.2008, 18:37
Цитата

Русский MSDN: http://msdn.microsoft.com/ru-ru/default.aspx


были мы здесь уже )  ... не такое оно уже и русское ... или я что-то не так делаю. Там по русски только сама страница ... а библиотека -  описания классов и методов  - на английском 

Автор: mr.DUDA 7.5.2008, 09:33
Наверно лавочку прикрыли. Раньше был доступен по адресу http://www.microsoft.com/rus/msdn, там статьи были переведены на русский. Теперь статьи заменили на en-US, видать ждут выхода http://forum.vingrad.ru/index.php?show_type=news&showtopic=208020. 

Автор: Jasmine 7.5.2008, 11:45
Понятно, будем ждать  smile 

Автор: Remiznik 10.5.2008, 15:50
ламерский вопр но всё же ... мне нужно задать три числа координаты обьекта но я хочу чтоб они задавались сразу 3 !! я делал по строчно но это както не красиво 
Код


           Console.Write("vvedite koordinati X1 ");
            x1 = Convert.ToDouble(Console.ReadLine());
            Console.Write("vvedite koordinati Y1 ");
            y1 = Convert.ToDouble(Console.ReadLine());
            Console.Write("vvedite koordinati Z1 ");
            z1 = Convert.ToDouble(Console.ReadLine());


а я хочу чтоб все три координаты задавались в одной строке ? 
Код

            Console.Write("vvedite koordinati X1,Y1,Z1 ");
            x1 = Convert.ToDouble(Console.Read());
            y1 = Convert.ToDouble(Console.Read());
            z1 = Convert.ToDouble(Console.Read());

это правельно ? если числа задавать через пробел ? 

Автор: CheFF 10.5.2008, 23:27
Remiznik, пробуй метод Split у стринга:
Код

            string cr;
            Console.WriteLine("Введите координаты через пробел:");
            cr = Console.ReadLine();
            string[] ar = cr.Split(' ');
            Console.WriteLine("Координата X: {0}", ar[0]);
            Console.WriteLine("Координата Y: {0}", ar[1]);
            Console.WriteLine("Координата Z: {0}", ar[2]);
            int x = Convert.ToInt32(ar[0]);
            int y = Convert.ToInt32(ar[1]);
            int z = Convert.ToInt32(ar[2]);



Автор: SergL5 14.5.2008, 19:29
Здравствуйте. У меня такая проблема. 
Существует текстовый файл:
Код

V-32014-32012-02$97.5$97.5$2$ЛБ$1100$1900$Изв. 21445/3255 от 14.04.05$ПП$32014$32012
V-00000-32012-02$95.5$96.9$1$ЛБ$1400$2900$Намечен для погрузки КГО$Н$00000$32012
V-00000-32806-02$102.5$103.8$1$ЛБ$1300$1100$Намечен для погрузки КГО$Н$00000$32806


Необходимо найти определенную строку и заменить "Намечен для погрузки КГО", например, на "Изв. 21445/3255 от 14.04.05". Как найти строку знаю, как произвести замену тоже, но как войти в режим редактирования и сохранить замену не разобрался. Подскажите пожалуйта.
Код

           string IDWord = localDesignationRabbet;
           string OutPatchLine = "";
           char Separator = '$';

            StreamReader reader = File.OpenText(RabbetsTxt);
            string input = null;
            while ((input = reader.ReadLine()) != null)
            {
                for (int i = 0; i < input.Length - 1; i++)
                {
                    if (input[i] != ';' && input[i] == Separator)
                    {
                        position = i;
                        break;
                    }
                }

                if (IDWord == input.Substring(0, position))//Проверка на наличие кючевого слова поиска в тексте
                {
                    OutPatchLine = input.Remove(0, position + 1);
                    break;
                }
            }

            OutPatchLine.Replace("Намечен для погрузки КГО", (textBoxlIzvNaryd.Text + " от " + textBoxDate.Text));

Автор: Ram1reS 14.5.2008, 20:50
Цитата(SergL5 @ 14.5.2008,  19:29)
Необходимо найти определенную строку и заменить "Намечен для погрузки КГО", например, на "Изв. 21445/3255 от 14.04.05". Как найти строку знаю, как произвести замену тоже, но как войти в режим редактирования и сохранить замену не разобрался. Подскажите пожалуйта.



1.Писать в файл, который читаешь не стоит =)
Сначала считай файл в массив строк, потом закрой и запиши поверх старого например.
2.Для поиска и замены имхо стоит юзать Regex.

Автор: SergL5 14.5.2008, 21:05
Цитата(Ram1reS @  14.5.2008,  20:50 Найти цитируемый пост)
Сначала считай файл в массив строк, потом закрой и запиши поверх старого например.
2.Для поиска и замены имхо стоит юзать Regex.


С примером не поможете? Завтра уже на работе нужно. Сам только еще осваиваю программирование с нуля, но прогу писать нужно.

В книге только чтение и запись нашел.

Автор: SergL5 14.5.2008, 21:26
Тогда можно просто создать второй файл (без сохранения) и копировать в него из первого файла построчно, изменяя что необходимо изменить - потом закрыть первый, а второй сохранить под именем первого.

Автор: Ram1reS 14.5.2008, 22:19
Цитата(SergL5 @ 14.5.2008,  21:26)
Тогда можно просто создать второй файл (без сохранения) и копировать в него из первого файла построчно, изменяя что необходимо изменить - потом закрыть первый, а второй сохранить под именем первого.

Студии под рукой нету, пишу примерно =)

Код

           string inputFileName = @"c:\input.txt";
           string searchPrase = "Намечен для погрузки КГО";
           string replacePhrase = textBoxlIzvNaryd.Text + " от " + textBoxDate.Text;

           StreamReader sr = new StreamReader(inputFileName);
           StringBuilder sb = new StringBuilder();
           
           while(!sr.EndOfStream)
           {
                 string line = sr.ReadLine();
                 
                 if(line.Contains(searchPhrase))
                 {
                       line = line.Replace(searchPhrase,replacePhrase);
                 }
 
                 sb.Append(line);
           }

           sr.Close();
            
           string result = sb.ToString();
 
           StreamWriter sw = new StreamWriter(inputFileName);
           sw.Write(result);
           sw.Close();

Автор: SergL5 15.5.2008, 17:13
Спасибо за помощь. У меня, к сожалению не прямоугольный, а неравномерный массив, поэтому возникли проблемы с форматированием. С массивами, конечно, нужно разобраться самому. К тому же код выполняет замену во всех строках текста, а мне требуется замена только в найденной по ключу строке. Пока, что сделал через создание дополнительного текстового файла - некрасиво, но как говориться "дорога ложка к обеду" или в моем случае сегодня. Прогу сделал - хоть так, но работает.

Автор: nokiaqd 19.5.2008, 12:33
Доброго времени суток!
Есть у меня такая маленькая зодумка а вот как реализовать ее я немного не могу понять!
MS VSE2005 C# ps1
Занчит таг у меня есть 2 текст бокса и 2 кнопки цель получить в текс боксах следующие данные
1бокс путь (аля c:\моя папка\)
2бокс путь с указанием на файлик (аля c:\тут был я\text.txt)
если с первый я кое как кое где в хелпе разобрался то со вторым невылазет каменный цветик! smile  smile 
Код

       private void button1_Click(object sender, EventArgs e)
        {
            DialogResult result = folderBrowserDialog1.ShowDialog();
            if (result == DialogResult.OK)
            {  
                textBox1.Text = "" + folderBrowserDialog1.SelectedPath ;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
      
        }

По сути я решил использовать что имелось под рукой и по это му выбор пал на диологовые кошки с фолдер понятно а вот как провернуть аналогишное с вариантом 2 тупик чет! smile 
зарание спасибо!

Автор: Ram1reS 19.5.2008, 14:34
Используй OpenFileDialog.

Автор: nokiaqd 19.5.2008, 15:51
 smile 
 smile 
Не выходит аланький цветочег! smile 
Код

private void button2_Click(object sender, EventArgs e)
        {
// из примера в хелпе =)
            Stream myStream;
            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.InitialDirectory = "c:\\";
            openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
            openFileDialog1.FilterIndex = 2;
            openFileDialog1.RestoreDirectory = true;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox2.Text = "" + openFileDialog1.OpenFile();
            }
         }

в моем текстовом боксе он пишет типо System.IO.FileStream может где то что то забыл указать или поставить ? smile 
щас пробовал переиначить немного подругому тот же результат
Код

        private void button2_Click(object sender, EventArgs e)
        {
            Stream myStream;
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            openFileDialog1.InitialDirectory = "c:\\";
            openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
            openFileDialog1.FilterIndex = 2;
            openFileDialog1.RestoreDirectory = true;
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                myStream = openFileDialog1.OpenFile();
                textBox2.Text = "" + myStream;
            }
        }

Автор: Ram1reS 19.5.2008, 21:09
Зачем Вам Stream? Вы же вроде хотите только путь к файлу отобразить.
Метод OpenFile - возвращает объект типа Stream, который можно использовать для чтения/записи самого файла, а имя выбранного файла содержится в свойстве FileName класса OpenFileDialog.

Соответственно:

Код

OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.InitialDirectory = "c:\\";
            openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
            openFileDialog1.FilterIndex = 2;
            openFileDialog1.RestoreDirectory = true;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox2.Text = openFileDialog1.FileName;
            }

Автор: nokiaqd 20.5.2008, 10:11
Спасибо! получилось! smile 

Автор: nokiaqd 22.5.2008, 11:46
Люди а как отчистить текст бокс какой командой? smile 
а все недоглядел хелп соории 
textBox1.Clear();

Автор: contramundum 22.5.2008, 12:50
nokiaqd
Код

TextBox1.Text=""


Добавлено @ 12:54
Ламерский вопрос:
что такое "конструктор"? Как его создать для нескольких элементов? Что он дает?

Автор: nokiaqd 22.5.2008, 13:52
Конструктор - это функция (метод) класса сам учусь просто в книге прочела что он делате пока еще и сам не разобрался! smile 
Раз эта функция, то описываем мы ее почти точно так же, как и любую другую функцию класса - пишем параметры в круглых скобках и т. п. Когда конструктор вызывается? В момент создания переменной. При этом у класса может быть несколько конструкторов - но при этом они должны различаться или типом параметров, или их количеством.
Этот урок будет основан на предыдущем. Откройте проект, созданный на прошлом уроке. Давайте добавим в наш класс Worker конструктор:
    ...
Код

    class Worker
    {
        public int age=3;
        public string name;
        //Конструктор 1
        public Worker(int age, string name)
        {
            this.age=age;
            this.name=name;
        }
    }

    ...
Обратите внимание на ряд особенностей конструктора. Во-первых, конструктор называется как класс. Раз наш класс называется Worker, значит и конструктор должен называться точно также. И во-вторых, конструктор, в отличие от других методов класса, не возвращает никакого значения (даже типа void). Если вы знакомы с языком C++, то, несомненно, это вам все знакомо.
Что делает наш конструктор? Он записывает передаваемые в него параметры во внутренние переменные класса. Обратите внимание, что называются они одинаково - age и age, name и name. Компилятор сначала ищет локальную переменную с таким именем, и, если не находит, то переменную класса. Поэтому age (и name) - это передаваемый в конструктор параметр. Если же нам надо сослаться на переменную класса (при существовании переменной с таким же именем, как и передаваемый в функцию параметр), то мы используем ключевое слово this. Оно всегда указывает на текущий экземпляр нашего класса. Таким образом в строчках
...
Код

  this.age=age;
  this.name=name;

...
мы передаем параметры конструктора в переменные класса.
Теперь изменим тестовый класс test следующим образом:
...
Код



  static void Main(string[] args)
  {
    //Вызываем конструктор
    Worker wrk1 = new Worker(40, "Вася");
    Console.WriteLine(wrk1.name+", "+wrk1.age);
  }

...
Теперь после объявления переменной мы вызываем конструктор с двумя параметрами, который запишет в переменные age и name экземпляра класса Worker значения 40 и "Вася". Строчкой ниже эти значения выводятся на экран.

Автор: contramundum 22.5.2008, 15:56
nokiaqd, спасибо... только я все-равно ниче не понял, тем-более я пишу на VB.NET и хоть и конвертнул код, не понял как им пользоваться...

у меня еще тут вопрос возник:
Как сделать красиво так, чтоб много одинаковых контролов "NumericUpDown" при увеличении значения после 9-ти скидывались в 0 и начинали сначала, ну а при уменьшении после 0 показывали 9?
выхожу из положения пока только очень громоздко и некрасиво так:
Код

If NumericUpDown1.Value > 9 Then NumericUpDown1.Value = 0
If NumericUpDown1.Value < 0 Then NumericUpDown1.Value = 9
' и так для каждого, а их много


думал что-то вроде этого, но не работает:
Код

If (NumericUpDown1.Value Or NumericUpDown2.Value Or NumericUpDown3.Value Or NumericUpDown4.Value) > 9 Then NumericUpDown1.Value = 0 OrNumericUpDown2.Value = 0 Or NumericUpDown3.Value = 0 Or NumericUpDown4.Value = 0
 smile

Добавлено через 5 минут и 25 секунд
тут вообще у меня еще проблема с правами доступа по ремотингу:
на клиенте возникает вот такая ошибка (к серваку клиент коннектится):
Код

Because of security restrictions, the type System.Runtime.Remoting.ObjRef cannot be accessed.

Что нужно прописать на серваке?! smile  smile  smile 

Автор: contramundum 23.5.2008, 08:09
mr.DUDA!! ну ответьте уже! smile

Добавлено через 30 секунд
я знаю, вы все знаете!! smile 

Автор: XAH 25.5.2008, 00:41
есть код какого нибудь простенького архиватора на С#?  не могу ничего найти, все исходники только на Делфи,паскале... а на С# нет

Автор: contramundum 27.5.2008, 10:32
Как сделать красиво так, чтоб много одинаковых контролов "NumericUpDown" при увеличении значения после 9-ти скидывались в 0 и начинали сначала, ну а при уменьшении после 0 показывали 9?
выхожу из положения пока только очень громоздко и некрасиво так:
Код

If NumericUpDown1.Value > 9 Then NumericUpDown1.Value = 0
If NumericUpDown1.Value < 0 Then NumericUpDown1.Value = 9
' и так для каждого, а их много


думал что-то вроде этого, но не работает:
Код

If (NumericUpDown1.Value Or NumericUpDown2.Value Or NumericUpDown3.Value Or NumericUpDown4.Value) > 9 Then NumericUpDown1.Value = 0 OrNumericUpDown2.Value = 0 Or NumericUpDown3.Value = 0 Or NumericUpDown4.Value = 0

ну ответьте кто-нибудь!!!

Автор: nokiaqd 27.5.2008, 10:50
я нуп и не че сам ненаю!contramundum предлогаю запостись терпением и поиском я если в ггле или на мс библиотеке не нахожу(хотя иногда нахожу но не всегда понятно) то пост появляется smile 
А подскажите плз как мне из colordialog получить цвет хекс вида(ну врать небуду не поню как он назвыается) ну в обещм такого вида FFFFFFF  smile 

Автор: nokiaqd 27.5.2008, 13:03
Вот люди подскажите что тут не так получилось
http://msdn.microsoft.com/en-us/library/system.windows.forms.colordialog.color.aspx по данному адресу напоролся на следующий пример
Код

        private void button1_Click(object sender, EventArgs e)
        {
            ColorDialog MyDialog = new ColorDialog();
            // Keeps the user from selecting a custom color.
            MyDialog.AllowFullOpen = false;
            // Allows the user to get help. (The default is false.)
            MyDialog.ShowHelp = true;
            // Sets the initial color select to the current text color.
            MyDialog.Color = textBox1.ForeColor;

            // Update the text box color if the user clicks OK 
            if (MyDialog.ShowDialog() == DialogResult.OK)
                textBox1.ForeColor = MyDialog.Color;
        }

специально под это дело состряпол новый проект с 1й кнопкой и 1м текст боксом но чет я не вижу чего он куда get или setит! я разобраться не могу помогите! smile 
Ой моодер обьедини плз 2моих поста! smile 

Автор: Ram1reS 27.5.2008, 14:21
Код

private void button1_Click( object sender , EventArgs e )
        {
            // создание диалога выбора цвета
            ColorDialog myDialog = new ColorDialog();
            myDialog.Color = textBox1.ForeColor;
            // вывод диалога
            if ( myDialog.ShowDialog() == DialogResult.OK )
            {
                // поменять цвет текстбокса
                textBox1.ForeColor = myDialog.Color;
                //вывести выбранный цвет в Hex
                MessageBox.Show(String.Format("{0:X2}{1:X2}{2:X2}",myDialog.Color.R,myDialog.Color.G,myDialog.Color.B));
            }
        }

Автор: Ram1reS 27.5.2008, 14:58
Цитата(contramundum @ 27.5.2008,  10:32)
Как сделать красиво так, чтоб много одинаковых контролов "NumericUpDown" при увеличении значения после 9-ти скидывались в 0 и начинали сначала, ну а при уменьшении после 0 показывали 9?

Для начала установи свойство Minimum у NumericUpDown'ов в отрицательное значение (например, -5) для того чтобы можно было получить значение меньше 0.

Далее пишем метод:
Код

        private static void NudValueChanged( object sender , EventArgs e)
        {
            NumericUpDown nudDigits = sender as NumericUpDown;
            if ( nudDigits.Value > 9 )
            {
                nudDigits.Value = 0;
            }
            else if ( nudDigits.Value < 0 )
            {
                nudDigits.Value = 9;
            }
        }


И, например, в Form_Load добавляем наш обработчик события к NumericUpDown'ам:
Код

        private void Form1_Load( object sender , EventArgs e )
        {
            numericUpDown1.ValueChanged += new EventHandler(NudValueChanged);
            numericUpDown2.ValueChanged += new EventHandler( NudValueChanged );
        }

Автор: nokiaqd 27.5.2008, 15:23
Ram1reS  спасибо разобрался в чем тут дело!
до полного счастья мне нуно было поступить вот как 
Код

        private void button1_Click(object sender, EventArgs e)
        {
            ColorDialog MyDialog = new ColorDialog();

            MyDialog.AllowFullOpen = false;

            MyDialog.Color = textBox1.ForeColor;

            if (MyDialog.ShowDialog() == DialogResult.OK)

            textBox1.Text = String.Format("{0:X2}{1:X2}{2:X2}", MyDialog.Color.R, MyDialog.Color.G, MyDialog.Color.B);
  
        }


Автор: contramundum 27.5.2008, 16:59
Ram1reS, СПАСИБО!!!! smile ...наконец-то хоть кто-то ответил!)))
пока не пользовал.. завтра попробую! ура!!!

Автор: SmartBye 27.5.2008, 21:22
Подскажите, как правильно организовать код, который должен выполняться при активировании формы?
Т.е. у меня форма была либо свернута, либо просто на заднем плане (т.е. неактивна) и вот, когда пользователь переключается на нее, должен произвестись код.

В событиях формы не нашел ничего подходящего(

Автор: Ram1reS 28.5.2008, 09:00
Цитата(SmartBye @ 27.5.2008,  21:22)
Подскажите, как правильно организовать код, который должен выполняться при активировании формы?
Т.е. у меня форма была либо свернута, либо просто на заднем плане (т.е. неактивна) и вот, когда пользователь переключается на нее, должен произвестись код.

В событиях формы не нашел ничего подходящего(

Событие Activated у Form.

Например:
Код

private void Form1_Activated( object sender , EventArgs e )
        {
            this.Text = DateTime.Now.ToString();
        }

Автор: SmartBye 28.5.2008, 09:06
И то верно... Что-то я ее пропустил в обилии событий формы. Спасибо!

Автор: SmartBye 28.5.2008, 23:49
Подскажите такую вещь:
есть notifyicon. Как сделать поупап из этого значка? Как это бывает, к примеру, у менеджеров закачек, когда заканчивается закачка. Раздается такой шлепок и вылезает облачко с информацией.

Можно ли такое организовать стандартными средствами VS?

Автор: Ram1reS 29.5.2008, 08:54
Цитата(SmartBye @ 28.5.2008,  23:49)
Подскажите такую вещь:
есть notifyicon. Как сделать поупап из этого значка? Как это бывает, к примеру, у менеджеров закачек, когда заканчивается закачка. Раздается такой шлепок и вылезает облачко с информацией.

Можно ли такое организовать стандартными средствами VS?

Можно конечно:
Код

void Form1_DoubleClick(object sender, EventArgs e)
{
    notifyIcon1.Visible = true;
    notifyIcon1.ShowBalloonTip(20, "Information", "This is the text",
        ToolTipIcon.Info );
}


Инфа по notifyicon: http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon_members.aspx
Конкретно к попапу:
http://msdn.microsoft.com/en-us/library/ms160065.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon.balloontipicon.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon.balloontiptext.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon.balloontiptitle.aspx

Автор: polundra 29.5.2008, 11:09
В Visual Studio-2005 не обнаружил пункта меню "Save Project AS" или аналога
Как создать другой проект на основе имеющегося?

Автор: SmartBye 29.5.2008, 12:03
Ram1reS, большое спасибо. Не знал что это называется балоном.

Автор: Ram1reS 29.5.2008, 15:39
Цитата(polundra @ 29.5.2008,  11:09)
В Visual Studio-2005 не обнаружил пункта меню "Save Project AS" или аналога
Как создать другой проект на основе имеющегося?

Скопируй папку с проектом  smile 

Автор: DZeus 30.5.2008, 14:39
Как в событии TextBox_KeyPress определить что нажата клавиша Enter ? smile 

Автор: Ram1reS 30.5.2008, 16:29
Цитата(DZeus @ 30.5.2008,  14:39)
Как в событии TextBox_KeyPress определить что нажата клавиша Enter ? smile

Код

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Return)
            {
                // обработка
                e.Handled = true;
            }

        }

Автор: SmartBye 31.5.2008, 23:01
Когда в DataGridView появляются данные, то колонки можно выровнять двойным кликом разделителю между названиями столбцов.

Как избавить от этого пользователя, т.е. сделать это самому, программно? 

Автор: Ram1reS 1.6.2008, 02:58
Цитата(SmartBye @ 31.5.2008,  23:01)
Когда в DataGridView появляются данные, то колонки можно выровнять двойным кликом разделителю между названиями столбцов.

Как избавить от этого пользователя, т.е. сделать это самому, программно?

Код

private void button1_Click(object sender, System.EventArgs e)
{
    // Resize the height of the column headers. 
    dataGridView1.AutoResizeColumnHeadersHeight();

    // Resize all the row heights to fit the contents of all non-header cells.
    dataGridView1.AutoResizeRows(
        DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders);
}

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.columns(VS.80).aspx

Автор: SmartBye 1.6.2008, 12:43
Ram1reS, я, наверное, не правильно объяснил. Ваш пример выравнивает высоту ячеек, а мне нужно, что бы ячейки растягивались на ширину максимально длинного значения в столбце.

Т.е. вот так:
с
user posted image
до 
user posted image

Поигравшись с 
            
Код

dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.DisplayedCells);
            dataGridView1.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);


Так ничего и не получилось =/

Автор: Unsane 1.6.2008, 16:25
SmartBye
Код

dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
"i" меняем на номер нужного столбца..

Автор: SmartBye 1.6.2008, 19:26
Unsane
спасибо, то, что нужно.

А как сделать аналог этой функции через foreach?
Код

public void SetSize (DataGridView DG)
        {
            for (int i = 0; i < DG.ColumnCount; i++)
            {
                DG.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
            }
        }

Так и не смог вывести нужные свойства через foreach.

Автор: Ram1reS 1.6.2008, 20:07
Цитата(SmartBye @ 1.6.2008,  19:26)
Unsane
спасибо, то, что нужно.

А как сделать аналог этой функции через foreach?
Код

public void SetSize (DataGridView DG)
        {
            for (int i = 0; i < DG.ColumnCount; i++)
            {
                DG.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
            }
        }

Так и не смог вывести нужные свойства через foreach.

Код

foreach( DataGridViewColumn col in DG.Columns)
{
    col.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
}

Автор: SmartBye 2.6.2008, 20:50
Сколько, однако, разных типов в сишарпе. Спасибо =)

Автор: SmartBye 5.6.2008, 19:43
Можно ли как-то с помощью string.format ("{0}", int i) отформатировать вывод целочисленной переменной i так, что бы, например, если она состоит и одного числа, то перед ней ставился ноль?

Т.е. к примеру 1 выводилось как 01, 10 выводилось как 10, 5 как 05 и так далее.

Автор: Rififi 5.6.2008, 20:24
гуглим Standard Numeric Format Strings
{0:D2}

Автор: SmartBye 6.6.2008, 13:41
Спасибо =)

Подскажите, в чем непавильно регулярное выражение?

Код

string regex =
                @"^([0-1][0-9]|[2][0-3](?<hour>.*?)):([0-5][0-9](?<minuts>.*?))$";
                MatchCollection match = Regex.Matches(result, regex);
                if(match.Count == 0)
                    System.Windows.Forms.MessageBox.Show("Не получилось =/");
                else
                    foreach (Match mat in match)
                    {
                        System.Windows.Forms.MessageBox.Show(String.Format("{0}:{1}", mat.Groups["hour"], mat.Groups["minuts"]));
                          
                    }

В result нахоидится хтмл страничка, в которой есть простая строка со временем вида "HH:MM". Но данное выражение ее не находит(

Автор: marzell 7.6.2008, 23:20
доброго времени!
вот начал изучать C#, и немогу побороть один вопрос

написал вот это:


Код

using System;

namespace test
{
    public class Person
    {
        public string name;
        public int age;
    }
    class Class1
    {
        
        [STAThread]
        static void Main(string[] args)
        {
            
            Console.Write("Введите кол-во:");
            int peoples=Convert.ToInt32(Console.ReadLine());
            int y=peoples;
            jump(y);
            print();
        }
        public static void jump (int x)
        {
            Person[] NewPerson = new Person[x];
            for (int i=0;i < NewPerson.Length;i++)
            {
                
                NewPerson[i] = new Person();
                Console.Write("введите имя:");
                string Name=Console.ReadLine();
                Console.Write("введите возраст:");
                int Age=Convert.ToInt32(Console.ReadLine());

                NewPerson[i].name=Name;
                NewPerson[i].age=Age;
                
            }
        }
        public static void print()
            {
                
            for (int i=0;i<NewPerson.Length;i++)
            {
                Console.WriteLine(NewPerson[i].name+NewPerson[i].age);
            }
            }
                    
    }
    }
    
    



при компиляции пишет :: The name 'NewPerson' does not exist in the class or namespace 'test.Class1'
как мне написать ф-ию вывода на экран того, что находится в массиве объектов?
заранее спасибо!

Автор: MaxiMiliaN_ 8.6.2008, 11:50
Ребят подскажите, в поиске ничего не нашел.
Возможно ли в C# 2005 открыть проекты, созданные на 2008?
Или как сохранить в 2008, чтобы понимал 2005?

Автор: Raid 8.6.2008, 16:45
marzell
Ты массив персон объявил в методе. Из другого метода его нельзя увидеть. 
Почитай про области видимости переменных, а сделать можно примерно так
Код

class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            Console.Write("Введите кол-во:");
            int peoples = Convert.ToInt32(Console.ReadLine());
            int y = peoples;
            jump(y);
            print();
        }
        Person[] NewPerson; // ссылка на нужный массивчик
        public static void jump(int x)
        {
            NewPerson = new Person[x];
            for (....
        }
        public static void print()
        {
            for (int i = 0; i < NewPerson.Length; i++)
            {
                Console.WriteLine(NewPerson[i].name + NewPerson[i].age);
            }
        }
    }

Теперь из метода печати к этому массиву можно обратиться через ссылку, которую мы объявили в нашем классе

Автор: Omni 12.6.2008, 20:07
создал форму в C# (Form1). На ней кнопка перехода в форму 2.
  •  private void button1_Click(object sender, EventArgs e)
            {
                Form2 f = new Form2();
                f.Show();
            }
нужно после открытия формы 2 закрыть форму1.
Пробывал манипулировать оператором Close но для данной ситуации поиски в нете результата не дали).

this.Close(); - результата не дало, т.к. закрывается активное
this.Hide(); - только спрятало, но нужно полностью закрыть старую форму

Автор: Ram1reS 12.6.2008, 23:42
Цитата(Omni @ 12.6.2008,  20:07)
создал форму в C# (Form1). На ней кнопка перехода в форму 2.

  •  private void button1_Click(object sender, EventArgs e)
            {
                Form2 f = new Form2();
                f.Show();
            }
нужно после открытия формы 2 закрыть форму1.
Пробывал манипулировать оператором Close но для данной ситуации поиски в нете результата не дали).

this.Close(); - результата не дало, т.к. закрывается активное
this.Hide(); - только спрятало, но нужно полностью закрыть старую форму

Код

private void button1_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.ShowDialog();
            this.Close();
        }

Автор: SmartBye 23.6.2008, 01:05
Подскажите, каким контролом можно организовать растягивание пользователем каких-то объемных контролов за счет други? Т.е. [---|--------] пользователь мог перетянуть как [---------|--] (нарисованно чисто схематично). Есть контрол tablelayoutpanel, но я не знаю, как разрешить пользователю растягивать ячейки в уже готовом приложении.

Автор: Unsane 24.6.2008, 14:57
Планируется сохранять настройки в файл с помощью сериализации. Так вот вопрос, как будет оптимальней работать с файлом настроек:
1. При запуске приложения грузить объект в память, а при изменении настроек изменить объект и сохранить в файл.
2. При необходимости подгружать объект из файла, читать/записывать, и сохранять(в случае записи).
3. Другой вариант(напишите).

Автор: PashaPash 24.6.2008, 15:25
Unsane, другой вариант - использовать стандарные settings. 

Автор: v1rtu0z 25.6.2008, 15:24
Цитата(MaxiMiliaN_ @  8.6.2008,  12:50 Найти цитируемый пост)
Ребят подскажите, в поиске ничего не нашел.Возможно ли в C# 2005 открыть проекты, созданные на 2008?Или как сохранить в 2008, чтобы понимал 2005?


ответ на 1й вопрос - нет. насчет 2го не уверен, что так можно..

Автор: Kakadu 27.6.2008, 15:24
Вот я тут работать с деревьями пытаюсь....
Код

        public class TDicItem      // элемент дерева-словаря
        {
            public string rus, eng;
            public TDicItem le, re, // левая и правая ветвь в английском дереве
                                      lr, rr; // и в русском
        }

И хочу пройтись по всему дереву и вевести его элементы в ListBox:
Код

        public void AddEng2List(out ListBox lst, TDicItem what)
        {
            if (what == null) return;
            this.AddEng2List(out lst, what.le);
            lst.Items.Add(what.eng);
            this.AddEng2List(out lst, what.re);
        }

Он ругается: говорит в третьей стоке не проиходит инициализация переменной lst! (error CS0177: The out parameter 'lst' must be assigned to before control leaves the current method) Где бяка?

Автор: PashaPash 28.6.2008, 16:48
Kakadu, бяка в том, что out-параметру 'lst' нужно присвоить значение перед тем, как сделать return. А в 3-й строчке ты делаешь return, оставляя lst на произвол судьбы.

Автор: Shadow_86 29.6.2008, 09:59
народ скиньте пару ссылок на классные книги!!! а то *ругань* попадается!!! плиз!!!заранее спасибо!!!

Добавлено через 24 секунды
извеняюсь по С#!!!  

Автор: THandle 30.6.2008, 16:44
Мне советовали вот эту книгу:

http://www.books.ru/shop/books/30124

Сейчас уже почти всю прочитал. Написано, имхо, хорошо. Читать интересно. Покупал книгу по данной выше ссылке. Доставили где то за неделю.

Автор: Idsa 30.6.2008, 18:51
THandle, omg. Это по-моему 2-е издание Троелсена (по .NET 1.1). Непонятно, зачем они переиздали эту книгу в 2007 году, хотя тогда уже было доступно 3-е издание (по .NET 2.0). Я уж полгода как обзавелся и 4-м изданием (по .NET 3.5), правда на английском. Кстати между 3-м и 4-м изданием было промежуточное - Special Edition по .NET 3.0.

Добавлено через 4 минуты
Только что до меня дошло, почему издательство Питер переиздало книгу Троелсена по .NET 1.1 в 2007-м году. Дело в том, что права на перевод 3-го издания выкупило издательство williamspublishing, поэтому Питер не оставалось ничего как переиздать популярную (хоть и морально устаревшую) книгу.

Автор: THandle 30.6.2008, 20:58
Idsa, спасибо за информацию. Я когда книжку то покупал даже и не представлял что такое .NET даже приблизительно. smile 

Не посоветуете тогда что почитать после нее, так сказать, в продолжение темы познания C# и .NET? smile 

Автор: Idsa 1.7.2008, 04:01
Посоветую того же Троелсена, только 4-е издание (ну или хотя бы 3-е). Еще Рихтера хвалят.

Автор: gambit 1.7.2008, 09:30
Подскажите как обратится к символу в строке, как было в delphi
Код

var s:string;
var ss:string;

ss:=s[2];


Прочитал в книге, что у строк есть метод this() который возвращает из строки символ, но VS2008 не знает такого метода.  smile 

Автор: Exai1e 1.7.2008, 09:38
gambit
Код

string s = "One";
string s1 = "";

s1 = s[1].ToString();
MessageBox.Show(s1,s1);


вроде вот что тебе нужно)

или так
Код

s1 = (Char.ToString(s[1]));

или так
Код

s1 = Convert.ToString(s[1]);


Добавлено @ 09:43
Цитата(gambit @  1.7.2008,  10:30 Найти цитируемый пост)
Прочитал в книге, что у строк есть метод this() который возвращает из строки символ, но VS2008 не знает такого метода.

this - это аналог Self в Delphi

Добавлено @ 09:45
можно и так объявить
Код

string s = "One";
string s1 = s[2].ToString();
            
MessageBox.Show(s1,s1);

Автор: gambit 1.7.2008, 09:51
Цитата(Exai1e @  1.7.2008,  09:38 Найти цитируемый пост)
this - это аналог Self в Delphi

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

Автор: THandle 1.7.2008, 11:01
http://www.books.ru/shop/books/561745
http://www.ozon.ru/context/detail/id/3938065/
http://www.ozon.ru/context/detail/id/3723195/

Нашел вот это.
Думаю купить пока вторую. Потом когда переведут на русский и будет дешевле третью. smile 

Idsa, спасибо. А то я так бы и остался сейчас с книжкой 2002 года smile 

Exai1egambit, ребята, и вы тут?))

Автор: Exai1e 1.7.2008, 11:15
THandle, я кстати тоже с этой книжкой "старой" общаюсь ;) и тоже не знал что она старовата, через пару неделек куплю более новую, 3.0 (http://www.ozon.ru/context/detail/id/3938065/)

"Exai1e, gambit, ребята, и вы тут?))"
тссс.. только не кому

Автор: gambit 1.7.2008, 11:18
Цитата(THandle @  1.7.2008,  11:01 Найти цитируемый пост)
Exai1e, gambit, ребята, и вы тут?))

тут, только никому не говори  smile 

Автор: gambit 2.7.2008, 13:39
Exai1e,
 
Код

s1 = s[1].ToString();


Выдает ошибку при компиляции. К сожалению не переписал ошибку. Если у кого студия под рукой, пожалуйста попробуйте.

Автор: Exai1e 2.7.2008, 13:43
gambit
Код

using System;

namespace qwertrty
{
    class Program
    {
        public static void Main(string[] args)
        {
            string s1;
            string s = "Hello";
            
            s1 = s[1].ToString();        
            Console.WriteLine(s1);
            Console.ReadKey(true);
        }
    }
}


все нормально =) никаких ошибок =)

Добавлено через 4 минуты и 14 секунд
и остальные варианты тоже рабочие, я же сначало пробовал так делать =) перед тем как запостить =)

Добавлено через 8 минут и 14 секунд
gambit, мб строка пустая ?)

Автор: gambit 2.7.2008, 15:21
Exai1e, ну не знаю, вечером буду мучится, строка не пустая, но прогоняется в цикле и в кв. скобках вместо циферы переменная.

Добавлено через 43 секунды
Кстати, на этапе компиляции она пустая.

Автор: Exai1e 2.7.2008, 17:57
gambit, ну вот так тоже все нормально, в цикле =) покажи лучше код smile
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace temp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string s;
            string s1;

            s = Console.ReadLine();

            for (int i = 0; i < s.Length ; i++)
            {
                s1 = s[i].ToString();
                Console.WriteLine(s1);
            }
            Console.ReadKey(true);
        }
    }
}

Автор: gambit 2.7.2008, 18:53
Код

int scob = 0;
            for (int t; t < s.Length; t++ )
            {
                if (s[t].ToString == "(") scob++;
                if (s[t].ToString == ")") scob--;  
            }
            if (scob != 0) return 1;



Цитата

Error    1    Operator '==' cannot be applied to operands of type 'method group' and 'string'    C:\Users\Евгений Ильин\Documents\Visual Studio 2008\Projects\ConsoleApplication2\ConsoleApplication2\Program.cs    28    21    ConsoleApplication2

Error    2    Operator '==' cannot be applied to operands of type 'method group' and 'string'    C:\Users\Евгений Ильин\Documents\Visual Studio 2008\Projects\ConsoleApplication2\ConsoleApplication2\Program.cs    29    21    ConsoleApplication2


Автор: gambit 2.7.2008, 19:12
Цитата(gambit @ 1.7.2008,  09:51)
Цитата(Exai1e @  1.7.2008,  09:38 Найти цитируемый пост)
this - это аналог Self в Delphi

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

Валерий Фаронов
Создание приложений с помощью c#

стр.109

Цитата

public char this{ int Index } {grt:}    Это свойство позволяет получить нужный символ из строки....

Автор: dimas_sceen 2.7.2008, 23:25
Такой вопрос, после размещения на форме экземпляра класса унаследованного от  контрола, форма не обрабатывает события. Как ее заставить их обрабатывать?
Код

using System.Windows.Forms;

namespace DeviceApplication1
{
    public partial class Form1 : Form
    {
        cls l;
        public Form1()
        {
            InitializeComponent();
            l = new cls();
            l.Parent = this;
        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            MessageBox.Show("Down");
        }

    }
}
public class cls : UserControl
{
    public cls()
    {
        this.KeyDown += new KeyEventHandler(listeng_KeyDown);
    }

    void listeng_KeyDown(object sender, KeyEventArgs e)
    {
        MessageBox.Show("cls DOWN");
    }
}


Если убрать "l.Parent = this;" то тогда форма будет обрабатывать нажатия.
Спасибо.

Автор: Exai1e 3.7.2008, 08:58
gambit
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace temp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string s;
            string s1;

            s = "(Hello)";
            //s = Console.ReadLine();

            for (int i = 0; i < s.Length ; i++)
            {
                s1 = s[i].ToString();

                //работает
                if (s[i].ToString().Equals("("))
                    Console.WriteLine("J_J");

                //работает
                if (s1.Equals("("))
                    Console.WriteLine("Не не не Девид Блейн, не не не !");
            }
            Console.ReadKey(true);
        }
    }
}



Добавлено через 2 минуты и 54 секунды
 smile C#  smile 

Автор: ImA 3.7.2008, 10:26
здравия желаю =)
очередной ламерский вопрос в общую карзину
как в си шарпе дотнета можно нарисовать примитивы, например прямоугольник, линию, через события мыши OnMousedown,OnMouseMove, OnMouseUp...
принцип действия такой - кнопка мыши, опускаясь, определяет начальные координаты примитива, кнопка зажата, ведем мышью - примитив перерисовывается, определяя конечную точку рисования, соответственно изменяя размеры... кнопка мыши отпускается, примитив рисуется по начальным и конечным координатам, образуя требуемый примитив

Автор: Unsane 3.7.2008, 11:35
Цитата(ImA @ 3.7.2008,  10:26)
здравия желаю =)
очередной ламерский вопрос в общую карзину
как в си шарпе дотнета можно нарисовать примитивы, например прямоугольник, линию, через события мыши OnMousedown,OnMouseMove, OnMouseUp...
принцип действия такой - кнопка мыши, опускаясь, определяет начальные координаты примитива, кнопка зажата, ведем мышью - примитив перерисовывается, определяя конечную точку рисования, соответственно изменяя размеры... кнопка мыши отпускается, примитив рисуется по начальным и конечным координатам, образуя требуемый примитив

Вот пример рисования прямоугольника
Код

    public partial class Form1 : Form
    {
        int sX, sY; // Начальные координаты
        Bitmap mBmp, tBmp; // Основной и вспомогательный битмапы
        bool isMouseDown = false;
        PictureBox pictureBox1 = new PictureBox(); // пикчербокс, в котором будем рисовать

        public Form1()
        {
            InitializeComponent();
            // Растягиваем пикчербокс во всю форму и по его размерам задаем основной битмап
            pictureBox1.Dock = DockStyle.Fill;
            this.Controls.Add(pictureBox1);
            pictureBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseDown);
            pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
            pictureBox1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseUp);

            mBmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            isMouseDown = true; // кнопка мыши нажата.. Можно сделать проверку на левую кнопку, если нужно
            sX = e.X; sY = e.Y; // Запоминаем начальные координаты
            pictureBox1.Cursor = Cursors.SizeNWSE; // меняем курсор мыши
        }


        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (isMouseDown) // если кнопка мыши нажата
            {
                tBmp = new Bitmap(pictureBox1.Width, pictureBox1.Height); // создаем дополнительный битмап
                using (Graphics gr = Graphics.FromImage(tBmp))
                {
                    gr.DrawImageUnscaled(mBmp, 0, 0); // копируем содержимое основного битмапа
                }
                paintRectangle(tBmp, sX, sY, e.X, e.Y); // рисуем прямоугольник на вспомогательном битмапе
            }
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            if (isMouseDown) // Если кнопка мыши нажата
            {
                isMouseDown = false; // "отпускаем" кнопку мыши
                paintRectangle(mBmp, sX, sY, e.X, e.Y); // рисуем прямоугольник на основном битмапе
                pictureBox1.Cursor = Cursors.Default; // возвращаем стандартный курсор
            }
        }

        void paintRectangle(Bitmap bmp, int startX, int startY, int finalX, int finalY)
        {
            SolidBrush myBrush = new SolidBrush(Color.Black); // Инициализируем кисть(черную)
            Graphics g = Graphics.FromImage(bmp); // выбираем "поверхность для рисования"

            // рисуем прямоугольник
            if (startX <= finalX && startY <= finalY)
                g.DrawRectangle(new Pen(myBrush), startX, startY, finalX - startX, finalY - startY);
            if (startX < finalX && startY > finalY)
                g.DrawRectangle(new Pen(myBrush), startX, finalY, finalX - startX, startY - finalY);
            if (startX > finalX && startY < finalY)
                g.DrawRectangle(new Pen(myBrush), finalX, startY, startX - finalX, finalY - startY);
            if (startX > finalX && startY > finalY)
                g.DrawRectangle(new Pen(myBrush), finalX, finalY, startX - finalX, startY - finalY);

            pictureBox1.Image = bmp; // получиный битмап подставляем в пикчербокс
        }
    }

Два битмапа нужны, чтобы при растягивании прямоугольника не оставалось старых линий.

Автор: ImA 4.7.2008, 10:49
на форме нужен пикчер бокс? а то у меня ошибки выскакивают
Error    1    The type 'laba.Form1' already contains a definition for 'pictureBox1'    C:\dotnet\laba\laba\Form1.cs    16    20    laba
если закаментировать строчку PictureBox pictureBox2 = new PictureBox();, а на форму бросить компонент этот, то все рисуется... 
а кстати, из-за чего изменение размеров происходит рывками? 

Автор: Unsane 4.7.2008, 22:42
У тебя на форме уже есть PictureBox с именем pictureBox1. Потому и ошибка. Переименуй один из них..
По поводу мерцания - попробуй у формы выставить свойство DoubleBuffered в true.

Автор: ImA 7.7.2008, 08:39
спасибо большущее  smile 

Автор: ImA 10.7.2008, 09:17
Код

isMouseDown = true; // кнопка мыши нажата.. Можно сделать проверку на левую кнопку, если нужно

не получается сказать программе какая из кнопок мыши нажата - левая или правая

Автор: Exai1e 10.7.2008, 12:00
Цитата(ImA @  10.7.2008,  10:17 Найти цитируемый пост)
не получается сказать программе какая из кнопок мыши нажата - левая или правая 

к примеру 
Код

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
                MessageBox.Show("Left", "Left");
            else
                MessageBox.Show("Right", "Right");
        }

Автор: Unsane 12.7.2008, 22:11
Привет всем. Вот такой вопрос. Есть класс, например, MyData. Можно ли организовать, например, класс MyDataManager, который будет работать с коллекцией MyData как ListBox со своими Items.
Например:
Код

MyDataManager mdm = new MyDataManager();
MyData md = new MyData();
mdm.Items.Add(md);
mdm.Items[0].КАКОЕ_ТО_ПОЛЕ_КЛАССА_MyData = "привет";


Автор: Exai1e 12.7.2008, 23:34
здравствуйте,
возник такой вопрос, какая функция в C# анагол Copy в Delphi ? Вот код на Delphi. Думаю из него все понятно
Код

var
  srcString : string;
  destString : string;
begin
  srcString := 'I Am Source String';
  //копируем в строку desString символы из строки srcString с 12 до конца строки
  destString := Copy(srcString, 12, Length(srcString));
end;

Глянул в msdn CopyTo, помоему немного не то.
Спасибо.

Автор: Legolas 12.7.2008, 23:47
Код

string a = "Hello world!";
string b = a.Remove(0, 6); \\ строка b содержит -> b = "world!";

Автор: wotker 12.7.2008, 23:53
Код

String firstString = "my string";
int ind = 3;
String newString = firstString.Substring(ind, firstString.Length - ind);        



2Legolas
 smile   Кстати, в оригинале строка "Hello world" без восклицательного знака smile 

Автор: Idsa 12.7.2008, 23:56
Legolas, все-таки это не точное соответствие smile

wotker, для копирования с определенной позиции до конца строки гораздо удобнее использовать эту перегрузку метода String.Substring:
Код

public string Substring(
    int startIndex
)


Код

string firstString = "my string";
int ind = 3;
string newString = firstString.Substring(ind);        

Автор: wotker 12.7.2008, 23:59
Ага. Спасибо, что поправил

Автор: Exai1e 13.7.2008, 00:30
Legolas
wotker
Idsa
Спасибо большое smile  smile 

Автор: Unsane 13.7.2008, 07:58
Чтобы вопрос не потерялся на предыдущей страничке, еще раз напишу:

Есть класс, например, MyData. Можно ли организовать, например, класс MyDataManager, который будет работать с коллекцией MyData как ListBox со своими Items.
Например:Код

Код

MyDataManager mdm = new MyDataManager();
MyData md = new MyData();
mdm.Items.Add(md);
mdm.Items[0].КАКОЕ_ТО_ПОЛЕ_КЛАССА_MyData = "привет";

Автор: wotker 13.7.2008, 09:44
Самый простой и нормальный вариант - использоваться пространство Generic. Никакого кода писать не надо:
Код

class MyData

    private int _data = 0;
    public int Data
    {
        get { return _data; }
        set { _data = value; }
    }
}
class MyDataManager : System.Collections.Generic.List<MyData>

}


.....

Код

MyDataManager man = new MyDataManager();
man.Add(new MyData());

int ind = 0;
man[ind].Data = 4;


Автор: Unsane 13.7.2008, 10:55
wotker, спасибо, то что нужно. 

Автор: antongorodetski28 28.7.2008, 19:59
приватный конструктор -  вот в чем проблема

Добавлено через 2 минуты и 50 секунд
Цитата(Arun @ 4.4.2008,  17:11)
Люди, подскажите.
Гоняю в С#.NET пару дней.
Что в этом коде не так?

Код

using System;

namespace myNameSpace 
{

public class MyInteger {
    MyInteger(string a){
            inta = int.Parse(a);
    }
    private int inta;
    public int Inta {
        get {return inta;}
        set {if (value < 0) inta = 0; else inta = value;}
    }
}

public class Program {
    static void Main(string[] args)
    {

                        MyInteger mi = new MyInteger("34");

        Console.WriteLine(mi.Inta);
        Console.ReadKey();
    }
}
    
}


по идее на консоль должно быть выведено число 34.
Однако при компиляции идет ругань: 'myNameSpace.MyInteger' does not contain a constructor that takes '1' arguments (CS1729)
на строчку 

Код

MyInteger mi = new MyInteger("34");

конструктор

Добавлено через 5 минут и 18 секунд
это да проблема

Добавлено через 11 минут и 25 секунд
Цитата(v1rtu0z @ 25.6.2008,  15:24)
Цитата(MaxiMiliaN_ @  8.6.2008,  12:50 Найти цитируемый пост)
Ребят подскажите, в поиске ничего не нашел.Возможно ли в C# 2005 открыть проекты, созданные на 2008?Или как сохранить в 2008, чтобы понимал 2005?


ответ на 1й вопрос - нет. насчет 2го не уверен, что так можно..

верный ответ

Добавлено через 13 минут и 43 секунды
да-да-да

Автор: antongorodetski28 28.7.2008, 20:38
Цитата(Exai1e @ 12.7.2008,  23:34)
здравствуйте,
возник такой вопрос, какая функция в C# анагол Copy в Delphi ? Вот код на Delphi. Думаю из него все понятно
Код

var
  srcString : string;
  destString : string;
begin
  srcString := 'I Am Source String';
  //копируем в строку desString символы из строки srcString с 12 до конца строки
  destString := Copy(srcString, 12, Length(srcString));
end;


отцитировано

Добавлено через 1 минуту и 42 секунды
second page

Добавлено через 3 минуты и 57 секунд
ламер

Добавлено через 5 минут и 12 секунд
Цитата(gambit @ 2.7.2008,  15:21)
Exai1e, ну не знаю, вечером буду мучится, строка не пустая, но прогоняется в цикле и в кв. скобках вместо циферы переменная.

Добавлено @ 15:22
Кстати, на этапе компиляции она пустая.

ты молодец

Добавлено через 6 минут и 50 секунд
Цитата(Jasmine @ 6.5.2008,  14:00)
А кто знает где можно почитать описание FCL на русском языке ... может быть хотябы основные пространства имен

не знаю я

Автор: Robust 29.7.2008, 05:09
Если надо именно для строк то можно сделать так:
Код

            string srcString = "I Am Source String";
            string destString = new string(srcString.ToCharArray(), 12, srcString.Length - 12);


А вообще есть статическая функция Array.Copy()

Автор: Macho 29.7.2008, 13:22
Добрый день.

Как осуществить свободное перемещение элементов в "DesignMode" при создании приложений ASP.NET в Visual Studio 2008

Когда работаешь с виндовс приложениями, там внутри формы можно как хочешь двигать...а ASP.NET всё на html и не могу понять как сделать сеточку и по ней свободно перемещать (как описано во многих книгах, но не пишут как это сделать).

Автор: 1stain 29.7.2008, 14:00
Macho
http://www.mikepope.com/blog/DisplayBlog.aspx?permalink=1367&count=no

Автор: Horoshil 4.8.2008, 02:33
Здравствуйте! Помогите найти ошибку, пожалуйста!
Создаю форму Form1 и хочу изменить её заголовок. Но хочу сделать это хитро. Создаю класс Form2 : Form1 и в его конструкторе изменяю заголовок Form1. А экземпляр Form2 создаю в Мэйне. Программа запускается, но заголовок не изменяется.
Код

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WindowsApplication1
{
    public class Form1 : System.Windows.Forms.Form
    {

        private System.ComponentModel.Container components = null;
        public Form1()
        {
            InitializeComponent();
        }
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }
        #region Windows Form Designer generated code
        private void InitializeComponent()
        {
            // 
            // Form1
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Name = "Form1";
            this.Text = "Form1";
        }
        #endregion    

        public class Form2 : Form1
        {
            public Form2()
            {
                this.Text="Form2";
            }
            
        }

        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
            Form1.Form2 form2 = new Form1.Form2();
         
        }
        
    }
}
 

Автор: Horoshil 4.8.2008, 10:28
Цитата(Horoshil @ 4.8.2008,  02:33)
Здравствуйте! Помогите найти ошибку, пожалуйста!
Создаю форму Form1 и хочу изменить её заголовок. Но хочу сделать это хитро. Создаю класс Form2 : Form1 и в его конструкторе изменяю заголовок Form1. А экземпляр Form2 создаю в Мэйне. Программа запускается, но заголовок не изменяется.

А, всё... Ошибку нашёл сам, внимательно почитав ваш замечательный форум! Ответ был в теме "как обратиться к объекту другой формы". Спасибо!

Но появился новый вопрос, а если у меня на форме Form1 имеется ещё куча лэйбелов, кнопок и т.д. И я хочу из класса Form2 обращаться и  кним. Как тогда быть? На всех на них ссылаться в конструкторе Form2 как-то нехорошо. 
Сейчас моя программа выглядит так:
Код

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WindowsApplication1
{
    public class Form1 : System.Windows.Forms.Form
    {

        public System.ComponentModel.Container components = null;
        public Form2 f2;
        public Form1()
        {
            InitializeComponent();
            f2 = new Form2(this);
        }
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }
        #region Windows Form Designer generated code
        private void InitializeComponent()
        {
            // 
            // Form1
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Name = "Form1";
            this.Text = "Form1";
        }
        #endregion    

        

        [STAThread]
        public static void Main() 
        {
            Application.Run(new Form1());
            
         
        }
        
        
    }
    public class Form2
    {
        Form1 f1;
        ///ctor
        public Form2(Form1 form)
        {
            this.f1=form;
            form.Text="123";
        }    
    }
    
}

Автор: Pork6 14.8.2008, 17:45
Всем добрый день, вопрос у меня элементарный, но ответ так и не нашел.

Имеется listBox1. В него добавляются данные. Когда строчек становится много - появляется Скроллбар и они пишутся ниже. Чтобы их увидеть, нужно пролистать этот список вниз.

Как сделать так, чтобы скроллбар сам пролистывался вниз, и пользователь всегда видел самую новую (нижнюю) строку?

Спасибо.

upd

Вот так

Код

listBox1.TopIndex = listBox1.Items.Count - 1; 

Автор: TimeHider 17.8.2008, 23:11
Возник вопрос по С#. Стоит задача создать приложение, которое будет для кождого обратившегося к ней процесса или домена выдавать не повторяющийся в пределах данной системы(компьютера) идентификатор. Нужно реализовать два решения данной задачи, с генератором криптографических ключей и со счетчиком. Первый пока пропустим. Мое решение по второму вопросу создать класс в котором будет статическое поле счетчика и синхронизировать доступ потоков к нему, во избежание ошибок. Проблема, после завершения программы счетчик сбивается на ноль. Возможное решение это запись в файл, и при последующей инициализации считывание информации. Однако возникает еще проблема - при использовании этого класса в нескольких приложениях они чисто теоретически не будут связаны и таким образом будут штамповать одинаковые идентификаторы, и к тому же кромсать файл. Решение постоянного перезаписывания в файл данных может привести к понижению производительности и к появлению ошибок из-за асинхронизации доступа к файлу. 
На данный момент сделаные шаги - в пространстве имен создан класс, имеющий статическое поле, в класе создан метод по получению и инкремированию значения статической переменной, с синхронизацией потоков доступа. Дальше пока тупик. Если можно подскажите, что принять и каким вопросам уделить внимание. Зарание благодарен.
Код

namespace IdentifireCreator
{
    internal class Creator
    {
        private static int counter;
        public void ReturnIdentifire()
        {
            lock (this)
            {
                counter++;
                Console.WriteLine("New ID is {0}", counter);

            }
        }
        ~Creator()
        {
 
        }

    }
}

Автор: contramundum 2.9.2008, 10:26
вопрос:
как изменить определенную строку в текстовом файле?
 smile  smile  smile  smile  smile  smile  smile 

Автор: Gordon 7.9.2008, 17:33
Ребята, что сделать, чтобы программа на С# в Windows Forms работала на компьютере, где нет .Net... Ну как в МFC, Buildere и т.п

Автор: Hades 7.9.2008, 18:09
Цитата(Gordon @  7.9.2008,  17:33 Найти цитируемый пост)
работала на компьютере, где нет .Net

http://forum.vingrad.ru/topic-191154.html
http://forum.codenet.ru/showthread.php?t=40382
http://www.gotdotnet.ru/Forums/Common/223394.aspx

Автор: Gordon 7.9.2008, 19:03
Hades, спасибо за инфу!

Автор: W!z@rD 10.9.2008, 14:59
не знаю, не ошибся-ли разделом...

что такое UserNameToken?
и еще, можно использовать произвольный Name & Password?
либо это имя и пароль заранее хранится на сервере?

Автор: Exai1e 10.9.2008, 15:18
W!z@rD, Сформулируй вопрос нормально) а то login & password - это вообще не понятно про какой логин с паролем говориш =) и про какой сервер

Автор: W1zArD 10.9.2008, 17:34
хмм... вобщем суть...

WSE 3.0

есть класс  UsernameToken
Код

UsernameToken token = new UsernameToken("UserName", "Password");


при создании объекта, ему можно передать 2 параметра: Имя, пароль.
вопрос, это произвольные данные? Или они должны быть заранее заведены на сервере?

Автор: Капи 11.9.2008, 22:58
Посоветуйте, что лучше почитать по основам ООП, с примерами на С#?

Автор: GGuz 28.9.2008, 16:16
Цитата(Капи @ 11.9.2008,  22:58)
Посоветуйте, что лучше почитать по основам ООП, с примерами на С#?

Герберт Шилдг - Полный справочник по С#
                          или
Герберт Шилдт - C# Учебный Курс

Автор: jetos 9.10.2008, 15:05
Люди подскажите как добавить аудио файл в программу. (Хачу сделать так что бы во время работы программы играла музыка  smile )

Автор: Hades 9.10.2008, 20:28
http://www.gotdotnet.ru/Forums/Common/131564.aspx + Google

Автор: belousov 10.10.2008, 15:39
Привет всем. Есть минимум двухзначное число. как получить последнюю цифру?

Автор: Partizan 10.10.2008, 15:48
belousov

Код

double x = 43.252;
int num = Convert.ToInt32(x.ToString()[x.ToString().Length - 1]);

Автор: belousov 10.10.2008, 15:59
Partizan,
не, такой вариант не работает. 

Например, есть число 15, мне нужно получить цифру 5.

Автор: belousov 10.10.2008, 16:43
Все. решение нашел. Спасибо. 
Есть функция EndsWith с помощью которой можно проверить на какой символ оканчивается строка. 

Автор: Partizan 10.10.2008, 16:50
belousov, а в чём проблема? чем мой вариант не угодил?

Автор: belousov 10.10.2008, 16:53
он выдал число 54, если в точности твой код скопировать.

Автор: Partizan 10.10.2008, 17:03
belousov
да...небольшой косячок) Конверт возвращает аски-код, если скормить ему объект типа char )

Вот валидный код:
Код

            double x = 43.252;
            int num = Convert.ToInt32(x.ToString()[x.ToString().Length - 1].ToString());

Автор: belousov 10.10.2008, 17:08
Partizan 
Спасибо) теперь действительно работает

Автор: Neoistheone 19.10.2008, 16:57
Narod est u kogo idei kak mozno prosegmentirovat izobrazenie po EDGE nu ili kakoi nibud? mozet znaet kto open source codq? 

Автор: Folk40 21.10.2008, 20:46
Объясните что делает данны код:
Код

Random rand = new Randon()
float value = (float)rand.NextDouble() + .5f;

То есть что присваиваится переменной value?.5f это равносильно 0.5f?Тогда получается что

value = (число от 0.0 до 1.0 + 0.5)?

Исправьте если не прав

Автор: Partizan 21.10.2008, 21:22
Folk40, всё имено так

Автор: BestRoot 30.10.2008, 08:12
Привет всем!
Сразу к делу->
Мне надо скопировать фаил на другой комп по сети как копировать я знаю,
но есть одна проблема тот комп просит логин и пароль.

Вапрос в том можно ли передать програмным путем логин пароль при копировании? smile

Добавлено через 14 минут и 17 секунд
ах да чуть не забул 

Можно ли сделать форму прозрачность 80% а у элементов находящихся на ней 100% если можно то как?

Автор: Travolta 3.11.2008, 14:20
Приветствую.
Подскажите, пожалуйста, по шагам от запуска Visual C++, что надо сделать
чтобы заработала Hello word.
И получить релиз *.exe
У меня Microsoft Visual Studio .Net 2003
При работе выбираю Visual C++
Заранее спасибо

Автор: Grok 4.11.2008, 10:20
Цитата(BestRoot @ 30.10.2008,  08:12)

Можно ли сделать форму прозрачность 80% а у элементов находящихся на ней 100% если можно то как?


юзай свойство Opacity, а на счет логина/пароля не знаю :( 

Автор: BestRoot 4.11.2008, 13:52
Цитата(Grok @ 4.11.2008,  10:20)

юзай свойство Opacity, а на счет логина/пароля не знаю :(

что такое Opacity я знаю,и как им пользоваться тоже в курсе
Только у формы это свойтво есть, а вот у элементов не хре...   его нет.
И когда у формы его меняешь то все её элементы автоматом становятся заданной ей прозрачностью!!! smile  smile 

Автор: EgoBrain 23.11.2008, 16:16
Скажите, а когда в массив добавляется экземпляр класса, то он становится то элемент массива - это отдельный экземпляр (копия) или ссылка на оригинал?
З.Ы. Если конкретнее, то - ArrayList.Add(classInstance);

Автор: Ram1reS 24.11.2008, 11:14
Цитата(EgoBrain @ 23.11.2008,  16:16)
Скажите, а когда в массив добавляется экземпляр класса, то он становится то элемент массива - это отдельный экземпляр (копия) или ссылка на оригинал?
З.Ы. Если конкретнее, то - ArrayList.Add(classInstance);

Ссылка на оригинал, т.к. классы - reference types.

Автор: EgoBrain 24.11.2008, 14:41
1). Что быстрее: вручную производить операции над строками или использовать
эквивалентные методы класса String? Например:
Код

 for (int i = 0; i < tempmas.Length; i++)
    tempmas[i] = (i + 1).ToString() + ": " + tempmas[i]; 

или
Код

 for (int i = 0; i < tempmas.Length; i++)
    tempmas[i] = tempmas[i].Insert(0, i.ToString() + ": ");


2). Присвоение массивов.
Почему когда я присваиваю один массив другому, то при изменении нового массива
изменяется оригинал?
Код

string[] stringof = new string[10]{"somestrings", ...};
string[] tempmas = new string[stringof.Length];
tempmas = stringof;
for (int i = 0; i < tempmas.Length; i++)
    tempmas[i] = tempmas[i].Insert(tempmas[i].Length, ")))"); //Действует и на
                                                                              //stringof

                                                              
Если же присвоение заменить на stringof.CopyTo(tempmas); //Все нормально

Автор: Ram1reS 24.11.2008, 17:10
Код

1). Что быстрее: вручную производить операции над строками или использовать
эквивалентные методы класса String? Например:
Код

 for (int i = 0; i < tempmas.Length; i++)
    tempmas[i] = (i + 1).ToString() + ": " + tempmas[i]; 

или
Код

 for (int i = 0; i < tempmas.Length; i++)
    tempmas[i] = tempmas[i].Insert(0, i.ToString() + ": ");



Для операций со строками лучше использовать StringBuilder.

Код

2). Присвоение массивов.
Почему когда я присваиваю один массив другому, то при изменении нового массива
изменяется оригинал?
Код

string[] stringof = new string[10]{"somestrings", ...};
string[] tempmas = new string[stringof.Length];
tempmas = stringof;
for (int i = 0; i < tempmas.Length; i++)
    tempmas[i] = tempmas[i].Insert(tempmas[i].Length, ")))"); //Действует и на
                                                                              //stringof

                                                              
Если же присвоение заменить на stringof.CopyTo(tempmas); //Все нормально

Читайте про value types и reference types.
Массив - reference тип - при приравнивании приравниваются ссылки, а не непосредственно данные.

Автор: hron 27.11.2008, 19:24
Собирась написать небольшой органайзер для своего КПК с Windows Mobile 6.1. Хочу на примере этого своего проекта освоить С#.
Вопрос : в чем хранить данные? (будет раздел с домашней бухгалтерией для построения диаграмок и календарик с заметками) В простом текстовом файле? XML? SQL (не хотелось бы, т.к. КПК)?
Может кто умел опыт в организации таких данных? Хватит ли одного файлика? Пользоваться собираюсь каждый день - хочу одновременно тестировать свою программу.

Автор: Ram1reS 27.11.2008, 22:55
Цитата(hron @ 27.11.2008,  19:24)
Собирась написать небольшой органайзер для своего КПК с Windows Mobile 6.1. Хочу на примере этого своего проекта освоить С#.
Вопрос : в чем хранить данные? (будет раздел с домашней бухгалтерией для построения диаграмок и календарик с заметками) В простом текстовом файле? XML? SQL (не хотелось бы, т.к. КПК)?
Может кто умел опыт в организации таких данных? Хватит ли одного файлика? Пользоваться собираюсь каждый день - хочу одновременно тестировать свою программу.

XML или SQLite думаю будут хорошими вариантами.

Автор: EgoBrain 1.12.2008, 13:48
Как отследить нажатие сочетания нескольких клавиш?

Автор: belousov 1.12.2008, 22:46
Как передать значение из одной формы в другую? Просто через переменную

увидел эту тему в корне, извиняюсь

Автор: Exai1e 2.12.2008, 03:28
EgoBrain
Код

            if ((e.Control) && (e.KeyCode == Keys.T))
            {
                MessageBox.Show("show");
            }

Автор: EgoBrain 2.12.2008, 12:47
Цитата(Exai1e @ 2.12.2008,  03:28)
EgoBrain
Код

            if ((e.Control) && (e.KeyCode == Keys.T))
            {
                MessageBox.Show("show");
            }

Спасибо, а почему не канает
Код

if (e.KeyCode == Keys.Control && e.KeyCode == Keys.F)
                MessageBox.Show("sS");
 ?
Получается разработчики предоставляют только возможность отслеживания одновременного нажатия Control, Shift или Alt + клавиша через аргументы функции KeyDown? А если я хочу W + A отследить?

Автор: nmn 4.12.2008, 23:36
тип Property - Object
Код

Object[] objArr = new Object[]{b.Property};

Что это значит?

Автор: nmn 5.12.2008, 01:45
возможно ли посмотреть на il код из ide, не используя ildasm?

Автор: nmn 7.12.2008, 23:39
как преобразовать int в bool
Код

int i;
bool c=(bool)i;

не работает

Автор: knox 7.12.2008, 23:55
а разве такое преобразование возможно ?

Автор: Rififi 8.12.2008, 00:21
nmn
как преобразовать int в bool
bool с = i != 0;

Автор: EgoBrain 8.12.2008, 14:15
Здравствуйте. Такой вопросик: когда дочерние контролы контейнера меняют свои физические свойства, перерисовка контейнера вызывается автоматически чтоле? Можно перечень событий, по которым такое происходит? smile 

Автор: belousov 9.12.2008, 23:01
Можно ли перезагрузить форму?

Автор: EgoBrain 10.12.2008, 14:26
Что значит "перезагрузить"? Уничтожить объект, затем заново создать, или заного произвести инициализацию всех полей?

Автор: VoidSoul 10.12.2008, 23:46
еще один ламерский вопрос
делаю что-то вроде будильника.. прога в ждущий режим комп по таймеру уже отправляет. А вот как его "разбудить"? - хз
может кто знает?

Автор: Smartless 11.12.2008, 23:22
прошу о помощи, мс с# 2008 експрес едишн. новый проект, сохраняю, в проперти захажу меняю таргет фреймворк на 2.0 сыпет ошибками при компиляции 
Цитата

Error    1    The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?)    C:\Users\Spawn\Documents\Visual Studio 2008\Projects\bd\bd\Program.cs    3    14    bd
Error    2    The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?)    C:\Users\Spawn\Documents\Visual Studio 2008\Projects\bd\bd\Form1.cs    6    14    bd
Warning    3    Could not resolve assembly System.Xml.Linq. The target framework required by this assembly (3.5) is higher than the project target framework. If this reference is required by your code, you may get compilation errors.    bd
Warning    4    Could not resolve assembly System.Data.DataSetExtensions. The target framework required by this assembly (3.5) is higher than the project target framework. If this reference is required by your code, you may get compilation errors.    bd
Warning    5    The referenced component 'System.Xml.Linq' could not be found.  
Warning    6    The referenced component 'System.Data.DataSetExtensions' could not be found. 
    


можна вручную удалять юзинги
using System.Linq; 
но может есть менее варварские методы, чтоб в дальнейшем ненаступать нинакакие грабли?

Автор: Ram1reS 12.12.2008, 10:26
Цитата(VoidSoul @ 10.12.2008,  23:46)
еще один ламерский вопрос
делаю что-то вроде будильника.. прога в ждущий режим комп по таймеру уже отправляет. А вот как его "разбудить"? - хз
может кто знает?

в шарпе нет встроенного функционала для этого насколько я знаю.
Юзай винапишный SetWaitableTimer:
http://forum.sources.ru/index.php?showtopic=23289
Тут пример на С++ http://www.rsdn.ru/Forum/message/772226.flat.aspx#772226
http://www.rsdn.ru/Forum/Message.aspx?mid=773295&only=1

Автор: Grok 15.12.2008, 16:07
Цитата(Smartless @ 11.12.2008,  23:22)
можна вручную удалять юзинги
using System.Linq; 
но может есть менее варварские методы, чтоб в дальнейшем ненаступать нинакакие грабли?

для нормального использования Linq, поставь фреймворк 3.5, неймспейсы вроде находятся в библиотеке System.Core

Автор: EgoBrain 21.12.2008, 11:41
Есть ли какая-нибудь возможность использовать string в качестве кода? То есть говорить CLR, что вот эта переменная, хранящая строку, есть код? Если есть, то теоретически в ней должен хранится MSIL-код... В общем с такой возможностью открылось бы масса возможностей (хотя, думаю, многие задачи можно решить другими-более традиционными способами)!

Автор: Ram1reS 21.12.2008, 14:16
Цитата(EgoBrain @ 21.12.2008,  11:41)
Есть ли какая-нибудь возможность использовать string в качестве кода? То есть говорить CLR, что вот эта переменная, хранящая строку, есть код? Если есть, то теоретически в ней должен хранится MSIL-код... В общем с такой возможностью открылось бы масса возможностей (хотя, думаю, многие задачи можно решить другими-более традиционными способами)!

Есть, копай CodeDom если не ошибаюсь.

Автор: Unsane 2.1.2009, 20:21
Как поменять режим компиляции в C# Express (Debug/Release)?..

Автор: nmn 3.1.2009, 01:19
возможно ли нахождение в модуле несколько сборок?

Автор: Partizan 3.1.2009, 01:20
nmn, сборка - это самая крупная единица...

Автор: nmn 3.1.2009, 23:44
Цитата(Partizan @ 3.1.2009,  00:20)
nmn, сборка - это самая крупная единица...

я так понимаю отдельная сборка представляет собой отдельный файл *.dll или *.exe, правильно?
возможно ли нахождение нескольких сборок в одном таком файле?

Автор: Partizan 3.1.2009, 23:55
nmn, именно так...сборка - есть файл dll/exe...в одной сборке может быть куча единиц компиляции - классов, ресурсов и вообще много чего...но сборка она и есть сборка - она одна...

я просто не совсем понмиаю что вам нужно получить...

Автор: Xao 6.1.2009, 03:26
Всем привет!

Что дает определение static конструктора класса или структуры?
Что будет если я определю обычный конструктор и static?
Какой из них будет вызываться?

В одной книге прочитал, что есть такой тип присваивания: "присваивание волшебного типа", выражение, к которому это относится:
Код

Node[] startNodes = Node.RootNodes;


Node - это класс, который имеет static массив RootNodes типа Node (т.е. самого класса)

Автор: nmn 6.1.2009, 03:29
static конструктор выполнится до создания первого экземпляра класса

Автор: Xao 9.1.2009, 23:59
Разбираюсь с наследованием, классами и интерфейсами, есть момент, который не понял

Код:
Код

namespace Interface
{
    interface IShape
    { double CalculateArea();    }

    class Square : IShape
    {
        protected double _width;
        public double Width
        {
            get { return _width; }
            set { _width = value; }
        }
        public double CalculateArea()
        { return _width * _width; }
    }

    class Rectangle : Square, IShape
    {
        double _height;
        public double Height
        {
            get { return _height; }
            set { _height = value; }
        }
        public new double CalculateArea()
        { return Width * _height; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Rectangle rectangle = new Rectangle();
            rectangle.Height = 30;
            rectangle.Width = 20;
            Square square = rectangle;
            IShape shapeCastFromRectangle = rectangle;
            IShape shapeCastFromSquare = square;
            Console.Write(
                "Square area = " + square.CalculateArea() + "\n" +
                "Rectangle area = " + rectangle.CalculateArea() + "\n" +
                "Cast from rectangle area = " + shapeCastFromRectangle.CalculateArea() + "\n" +
                "Cast from square area = " + shapeCastFromSquare.CalculateArea() + "\n" + 
                "");
        }
    }
}


Результат:
Код

Square area = 400
Rectangle area = 600
Cast from rectangle area = 600
Cast from square area = 600


1) Последний результат оказался не тот, который я ожидал(400), ведь в данном случае должен был вызваться метод  CalculateArea() класса square. В чем может быть ошибка?
2) В классе Rectangle в описании метода CalculateArea нужно использовать ключевое слово new. Для чего это делается?
3) Обязательно ли класс Rectangle надо наследовать не только от класса Square, но и от интерфейса IShape?

Автор: nmn 10.1.2009, 02:23
Цитата(Xao @  9.1.2009,  22:59 Найти цитируемый пост)
1) Последний результат оказался не тот, который я ожидал(400), ведь в данном случае должен был вызваться метод  CalculateArea() класса square. В чем может быть ошибка?
2) В классе Rectangle в описании метода CalculateArea нужно использовать ключевое слово new. Для чего это делается?
3) Обязательно ли класс Rectangle надо наследовать не только от класса Square, но и от интерфейса IShape?

1. В square хранится не Square а Rectangle.
2. Самому интересно smile Это похоже на указание о том что свойство переопределяется, но не уверен.
3. Что значит обязательно? Вас никто не заставляет. Хотя если убрать наследование нельзя будет присвоить переменной типа Square переменную типа Rectangle.

Автор: Xao 10.1.2009, 04:02
nmn
1) 
Код

            Rectangle rectangle = new Rectangle();
            rectangle.Height = 30;
            rectangle.Width = 20;
            Square square = rectangle;
            double area = square.CalculateArea();

в этом случае тоже в square хранится Rectangle, однако все правильно работает, я предполагаю, что понижение типа можно использовать только 1 раз, хотя не уверен

2) с или без - результат один и тот же, но выдается предупреждение, если без new

3) можно, когда я убираю наследование от интерфейса IShape, неправильный результат выдает метод CalculateArea(), при понижении типа до IShape, т.е.
Код

            Rectangle rectangle = new Rectangle();
            rectangle.Height = 30;
            rectangle.Width = 20;
            IShape shapeCastFromRectangle = rectangle; //<<<----- будет посчитана площадь квадрата, а не прямоугольника

ну с наследованием вроде понятно, что Rectangle должен наследоваться от тех интерфейсов, до которых будет происходит понижение типа переменных типа Rectangle



Автор: Partizan 10.1.2009, 14:14
Xao, new подавляет предупреждение о том, что невиртуальным метод с той же сигнатурой есть и родителе...вообще вам надо пометить в Rectangle метод CalculateArea ключевым словом virtual, а в его наследнике - пометить словом override

Автор: PashaPash 10.1.2009, 14:19
Xao, в .net немного не так организована работа с интерфейсами. От интерфейса не наследуются, его реализуют. Вот эта строчка:
Код

 IShape shapeCastFromSquare = square;

это не "понижении типа". Это получение ссылки на реализацию интерфейса IShape в объекте, на который ссылается square.
У тебя 2 реализации IShape, при приведении выбирается ближайшая - в классе Rectangle. Правильный подход - оставить одну реализацию, в Square, и сделать функцию CalculateArea виртуальной, а в Rectangle ее переопределить.

Автор: Xao 10.1.2009, 18:20
Цитата(PashaPash @  10.1.2009,  14:19 Найти цитируемый пост)
при приведении выбирается ближайшая - в классе Rectangle

ближайшая - это реализация Square?

Цитата(PashaPash @  10.1.2009,  14:19 Найти цитируемый пост)
Правильный подход - оставить одну реализацию, в Square, и сделать функцию CalculateArea виртуальной, а в Rectangle ее переопределить. 

так:
Код

namespace Interface
{

    interface IShape
    { double CalculateArea();    }

    class Square : IShape
    {
        protected double _width;
        public double Width
        {
            get { return _width; }
            set { _width = value; }
        }
        public virtual double CalculateArea() //виртуальный метод
        { return _width * _width; }
    }

    class Rectangle : Square
    {
        double _height;
        public double Height
        {
            get { return _height; }
            set { _height = value; }
        }
        public override double CalculateArea() //переопределение
        { return Width * _height; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Rectangle rectangle = new Rectangle();
            rectangle.Height = 30;
            rectangle.Width = 20;
            Square square = rectangle;
            IShape shapeCastFromRectangle = rectangle;
            IShape shapeCastFromSquare = square;
            Console.Write(
                "Square area = " + square.CalculateArea() + "\n" +
                "Rectangle area = " + rectangle.CalculateArea() + "\n" +
                "Cast from rectangle area = " + shapeCastFromRectangle.CalculateArea() + "\n" +
                "Cast from square area = " + shapeCastFromSquare.CalculateArea() + "\n" + 
                "");
        }
    }

}

если да, то результат неверный:
Код

Square area = 600 //должно быть 400
Rectangle area = 600
Cast from rectangle area = 600
Cast from square area = 600



По поводу приведения типов!

т.е. когда я делаю так:
Код

            Rectangle rectangle = new Rectangle();
            rectangle.Height = 30;
            rectangle.Width = 20;
            Square square = rectangle;
            double area = square.CalculateArea();

то вызывается метод типа Square, т.к. в классе Square он реализован

а когда так:
Код

            Rectangle rectangle = new Rectangle();
            rectangle.Height = 30;
            rectangle.Width = 20;
            Square square = rectangle;
            IShape shapeCastFromSquare = square;
            double area = shapeCastFromSquare.CalculateArea();

то вызывается метод типа Rectangle, т.к. в IShape этот метод не реализован, а только определен, а square это по идее экземпляр Rectangle

выходит, что это такая особенность приведения типов?



Автор: Partizan 10.1.2009, 18:24
удалил

Автор: Sovereign 11.1.2009, 13:56
как в dataGridView сделать нумерацию строк? smile 

Автор: Kolovorot 12.1.2009, 17:52
Как сделать подсказку в конструкторе, которая показывает ограничение для вводимых данных. Например http://ipicture.ru/Gallery/Viewfull/11531855.html  В данном случаи показывается ограничение по году, месяцу и дню.

Partizan, благодарю.

Автор: Partizan 12.1.2009, 17:59
Kolovorot, это всё берётся из xml-комментариев..

Код

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="value">Value parameter(from 1 to 10)</param>
        /// <param name="x">X parameter (from 0.0 to 1.0)</param>
        public Window1(int value, double x)
        {
            if (value < 1 || value > 10)
                throw new ArgumentException();

            if (x < 0.0 || x > 1.0)
                throw new ArgumentException();
        }


Надо всего лишь написать /// перед объявлением метода/конструктора/... чтобы сгенерировался xml-комментарий

Автор: EgoBrain 13.1.2009, 04:44
1). Как в .NET организовать проверку на существование сторонних (не системных) библиотек.
Например, я создал класс и подключаю его вручную к проекту, а пользователь эту ддлку потерял,
и чтоб приложение перехватывало это исключение а не JIT?

2). Почему CLR .NET выдает исключение на батовский файл? В бате пишу shutdown с параметрами.

Автор: Xao 13.1.2009, 22:45
EgoBrain
ты можешь сделать проверку на наличие файла длл

Автор: Unsane 14.1.2009, 01:51
Совсем дурацкий вопрос. Как получить имя директории из пути?
Пример: Путь "c:\mydirectory\dir\". Надо получить "dir"..

Автор: EgoBrain 14.1.2009, 05:04
Цитата(Unsane @ 14.1.2009,  01:51)
Совсем дурацкий вопрос. Как получить имя директории из пути?
Пример: Путь "c:\mydirectory\dir\". Надо получить "dir"..

Класс DerictoryInfo.

Добавлено через 5 минут и 29 секунд
Цитата(Xao @ 13.1.2009,  22:45)
EgoBrain
ты можешь сделать проверку на наличие файла длл

Как проверить, если я подключал бибилиотеку через визуальное проектирование References->AddItem->Browes... ?

Автор: THandle 14.1.2009, 13:20
Unsane, посмотри System.IO.Path, может там подойдет одна из функций smile


Автор: Xao 14.1.2009, 21:01
EgoBrain
в библиотеке делаешь какую-нить тестовую функцию, которая возвращает что-нить, например "REF_OK", либо возьми другую функции, возвращаемое значение которой ты будешь знать точно при определенных параметрах
потом в программе вызываешь эту функции в блоке try, если возвратилось "REF_OK" все норм, иначе сообщаешь пользователю, что не удалось подключиться к библиотеке
ну может есть какие-нить специализированные функции, но я их не знаю, т.к. недавно начал углубленно учить язык

Автор: EgoBrain 15.1.2009, 10:47
Цитата(Xao @ 14.1.2009,  21:01)
EgoBrain
в библиотеке делаешь какую-нить тестовую функцию, которая возвращает что-нить, например "REF_OK", либо возьми другую функции, возвращаемое значение которой ты будешь знать точно при определенных параметрах
потом в программе вызываешь эту функции в блоке try, если возвратилось "REF_OK" все норм, иначе сообщаешь пользователю, что не удалось подключиться к библиотеке
ну может есть какие-нить специализированные функции, но я их не знаю, т.к. недавно начал углубленно учить язык

Чтобы вызвать функцию из моей бибилиотеки необходимо подключить эту бибилиотеку, иначе компилятор выдаст ошибку и не будет компилировать, а если удалить бибилиотеку после успешной компиляции, то вызов функции в блоке трай кэтч вызывает исключение времени исполнения и не перехватывается. Пробовал "затраить" создание экземпляра класса:
Код

...
try
{
    SomeClass class = new SomeClass();
}
catch
{

}
...

не получилось.

Автор: Xao 16.1.2009, 20:07
EgoBrain
попробуй сделать так:
Код

using(SomeClass class = new SomeClass())
{
...
...
}


или можешь попробовать обратиться к пространству имен в блоке try:
Код

using AliasToMyClass = NameSpaceDLL.SomeClass;



Автор: Unsane 18.1.2009, 14:13
Как поменять режим компиляции в C# Express (Debug/Release)?..

Автор: Xao 18.1.2009, 15:11
Unsane
в свойствах проекта:
Debug - Configuration

У меня такой вопрос:
что такое дескриптор?
может кто-нить привести пример испльзования

Автор: Unsane 18.1.2009, 23:01
Цитата(Xao @ 18.1.2009,  15:11)
Unsane
в свойствах проекта:
Debug - Configuration

Вот тоже самое прочитал в мсдн.. До сих пор ищу.. Может не там?
http://img233.imageshack.us/my.php?image=76912771tk1.png

Автор: nmn 18.1.2009, 23:04
Цитата(Unsane @ 18.1.2009,  23:01)
Цитата(Xao @ 18.1.2009,  15:11)
Unsane
в свойствах проекта:
Debug - Configuration

Вот тоже самое прочитал в мсдн.. До сих пор ищу.. Может не там?
http://img233.imageshack.us/my.php?image=76912771tk1.png

посмотри на вкладке Build

Цитата(Xao @  18.1.2009,  15:11 Найти цитируемый пост)
что такое дескриптор?

это идентификатор обозначающий некий объект
например в win32, при создании окна, кисти и др ты получаешь дескриптор 

Автор: Xao 19.1.2009, 01:55
Unsane
1) в Solution Explorer правой кнопкой на Solution '......' (.. project[s])
выбери "Configuration Manager..."

2) Tools->Customize
в категории Debug команда Solitions Configuration, вынеси ее на панель куда-нибудь

3) View->Toolbars->Standart
настраиваешь панель Toolbar Options - > Solution Configuration


nmn
т.е. дескриптор это просто object, с методами и остальным от экземпляра какого-то класса?

а вот еще вопрос:
что делает yield return и когда его можно применять?
вот например простой пример:
Код

public IEnumerable NumberIterator()
{
  yield return 1;
  yield return 2;
  yield return 3;
{

что будет если я вызову эту функцию?
и обязательно ли функция должна быть типа IEnumarable?

Автор: Xao 19.1.2009, 02:43
в простом примере разобрался
yield return можно использовать только с конструкцией foreach
непривычно, когда можно продолжать исполнение после выхода из функции

Автор: nmn 19.1.2009, 12:29
Цитата(Xao @  19.1.2009,  01:55 Найти цитируемый пост)
т.е. дескриптор это просто object, с методами и остальным от экземпляра какого-то класса?

не обязательно object, но может быть и им, это зависит от элементной базы с которой ты работаешь

http://www.google.com/search?hl=en&q=%D0%B4%D0%B5%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D1%80&btnG=Google+Search&aq=f&oq=

Автор: Kolovorot 21.1.2009, 20:25
При создании делегата, генерируется код с закрытым классом,производным от  System.MulticastDelegate и с именем делегата.

При создании делегата public delegate int BinaryaOp(int x, int y); генерируется следующий код:

Код

sealed class BinaryOp : System.MulticastDelegate
{
     public BinaryOp(object target, unit functionAddress);
     public int Invoke(int x, int y);
     public IAsyncResult BeginInvoke(int x, int y, AsyncCallBack cb, object state);
     public int EndInvoke(IAsyncResult result);
}


Как можно самому создать класс, который наследуется от MulticastDelegate? Пробывал как в примере не вышло.

Автор: Kolovorot 21.1.2009, 20:51
Где можно скачать ildasm.exe?

Автор: nmn 21.1.2009, 22:03
Цитата(Kolovorot @ 21.1.2009,  20:51)
Где можно скачать ildasm.exe?

он входит в VS .NET

Автор: Kolovorot 22.1.2009, 01:06
Цитата(nmn @ 21.1.2009,  22:03)
Цитата(Kolovorot @ 21.1.2009,  20:51)
Где можно скачать ildasm.exe?

он входит в VS .NET

Это я знаю. Только я устанавливал, наверное, как-то по-дурацки, на компьютере не нашел, а диск с которого устанавливал уже отдал.
NMN, благодарю за ildasm.
XaoБлагодарю буду разбраться.

Автор: Xao 23.1.2009, 23:32
Kolovorot

MSDN:
Цитата

MulticastDelegate является специальным классом. Компиляторы и иные средства могут быть производными от этого класса, но его нельзя наследовать явным образом. Это справедливо и для класса Delegate.


Код

[SerializableAttribute]      //Указывает на возможность сериализации класса. Данный класс не может наследоваться.
[ComVisibleAttribute(true)]
public abstract class MulticastDelegate : Delegate


Пример из мсдн:
Код

using System;

    // This class contains strings. It has a member method that
    // accepts a multicast delegate as a parameter and calls it.

    class HoldsStrings
    {
        // The following line causes the compiler to generate
        // a new delegate class named CheckAndPrintDelegate that
        // inherits from System.MulticastDelegate.
        public delegate void CheckAndPrintDelegate(string str);

        // An ArrayList that holds strings
        private System.Collections.ArrayList myStringArray = new System.Collections.ArrayList();

        // A method that adds more strings to the Collection
        public void addstring( string str) {
            myStringArray.Add(str);
        }

        // Iterate through the strings and invoke the method(s) that the delegate points to
        public void PrintAllQualified(CheckAndPrintDelegate myDelegate) {
            foreach (string str in myStringArray) {
                myDelegate(str);
            }
        }
    }   //end of class HoldsStrings

    // This class contains a few sample methods
    class StringFuncs
    {
        // This method prints a string that it is passed if the string starts with a vowel
        public static void ConStart(string str) {
            if (!(str[0]=='a'||str[0]=='e'||str[0]=='i'||str[0]=='o'||str[0]=='u'))
                Console.WriteLine(str);
        }

        // This method prints a string that it is passed if the string starts with a consonant
        public static void VowelStart(string str) {
            if ((str[0]=='a'||str[0]=='e'||str[0]=='i'||str[0]=='o'||str[0]=='u'))
                Console.WriteLine(str);
        }
    }

    // This class demonstrates using Delegates, including using the Remove and
    // Combine methods to create and modify delegate combinations.
    class Test
    {
        static public void Main()
        {
            // Declare the HoldsStrings class and add some strings
            HoldsStrings myHoldsStrings = new HoldsStrings();
            myHoldsStrings.addstring("This");
            myHoldsStrings.addstring("is");
            myHoldsStrings.addstring("a");
            myHoldsStrings.addstring("multicast");
            myHoldsStrings.addstring("delegate");
            myHoldsStrings.addstring("example");

            // Create two delegates individually using different methods
            HoldsStrings.CheckAndPrintDelegate ConStartDel =
                new HoldsStrings.CheckAndPrintDelegate(StringFuncs.ConStart);
            HoldsStrings.CheckAndPrintDelegate VowStartDel =
                new HoldsStrings.CheckAndPrintDelegate(StringFuncs.VowelStart);

            // Demonstrate that MulticastDelegates may store only one delegate
            Delegate [] DelegateList;

            // Returns an array of all delegates stored in the linked list of the
            // MulticastDelegate. In these cases the lists will hold only one (Multicast) delegate
            DelegateList = ConStartDel.GetInvocationList();
            Console.WriteLine("ConStartDel contains " + DelegateList.Length + " delegate(s).");
            DelegateList = VowStartDel.GetInvocationList();
            Console.WriteLine("ConStartVow contains " + DelegateList.Length + " delegate(s).");

            // Determine whether the delegates are System.Multicast delegates
            // if (ConStartDel is System.MulticastDelegate && VowStartDel is System.MulticastDelegate) {
                Console.WriteLine("ConStartDel and ConStartVow are System.MulticastDelegates");
            // }

            // Run the two single delegates one after the other
            Console.WriteLine("Running ConStartDel delegate:");
            myHoldsStrings.PrintAllQualified(ConStartDel);
            Console.WriteLine("Running VowStartDel delegate:");
            myHoldsStrings.PrintAllQualified(VowStartDel);

            // Create a new, empty MulticastDelegate
            HoldsStrings.CheckAndPrintDelegate MultiDel;

            // Delegate.Combine receives an unspecified number of MulticastDelegates as parameters
            MultiDel = (HoldsStrings.CheckAndPrintDelegate) Delegate.Combine(ConStartDel, VowStartDel);

            // How many delegates is this delegate holding?
            DelegateList = MultiDel.GetInvocationList();
            Console.WriteLine("\nMulitDel contains " + DelegateList.Length + " delegates.");

            // What happens when this mulitcast delegate is passed to PrintAllQualified
            Console.WriteLine("Running the multiple delegate that combined the first two");
            myHoldsStrings.PrintAllQualified(MultiDel);

            // The Remove and Combine methods modify the multiple delegate
            MultiDel = (HoldsStrings.CheckAndPrintDelegate) Delegate.Remove(MultiDel, VowStartDel);
            MultiDel = (HoldsStrings.CheckAndPrintDelegate) Delegate.Combine(MultiDel, ConStartDel);

            // Finally, pass the combined delegates to PrintAllQualified again
            Console.WriteLine("\nRunning the multiple delegate that contains two copies of ConStartDel:");
            myHoldsStrings.PrintAllQualified(MultiDel);

            return;
        }   //end of main
    }   //end of Test


http://en.csharp-online.net/Multi-cast_Delegate



Kolovorot
тут смотрел?
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin

Автор: slavaentp 29.1.2009, 01:44
Visual C# Express Edition так много ресурсов жрёт. Можно ли как-то "облегчить" его?

Автор: BestRoot 29.1.2009, 18:00
народ пзил посоветуйте как у Лайбла убрать фон что только текст был виден 

Автор: Partizan 29.1.2009, 18:52
BestRoot, Background выставить в Transparent

Автор: Xao 11.2.2009, 00:29
объясните плз, что такое 
СИНГЛЕТОНЫ
для чего они нужны и какие преимущества их использования?
и если можно, какой-нибудь пример

Автор: Partizan 11.2.2009, 00:40
Xao, синглтон - это такой паттерн проектирования....в переводе означает "одиночка"...за счёт применения этого паттерна достигается эдакая "глобальность" объекта. То есть все те, кто пользуются объектом класса-синглтона фактически используют один и тот же объект...

Синглтон реализуется помечанием конструктора класса ключевым словом private и реализацией статического свойства или метода:
Код

class Singleton
{
    private static Singleton instance = null;

    public static Singleton Instance
    {
        get
        {
               if (instance == null)
                  instance = new Singleton();
              
              return instance;
        }
    }

    private Singleton()
    {
    }
}


Относительно недавно тут поднимался топик про Синглтоны vs Статические классы....там тоже много интересного подчерпнёте для себя...поищите по форуму...

Автор: Kolovorot 11.2.2009, 22:55
У меня конструкция синглтонов, приведенная Parizan'ом не работает.  Видимо из-за того, что статическое свойство не может использовать не статический член. 

Автор: Partizan 11.2.2009, 23:17
Kolovorot, поправил

Автор: Xao 12.2.2009, 00:32
стало более понятно, спасибо!

а вот еще такой вопрос:
часто вижу такое понятие как "фабрика", есть кое-какие представления о том, что это такое, но хотелось бы более конкретно разобраться smile
что такое фабрика?
и  smile  smile

Автор: Partizan 12.2.2009, 10:51
Xao, Возьмите книгу GoF "Design Patterns"....там это всё описывается...

Автор: Evoke 12.2.2009, 13:17
Возможно ли создание .net приложений, которые бы включали все нужные биб-ки для его запуска, и для установки на компьютер, где нет framework'a?

Автор: Xao 13.2.2009, 00:33
народ, подскажите, может ли юридическое лицо использовать msi 3.1, .net framework 3.5 и visual c# express
все это программы бесплатные для физического лица, могут ли быть проблемы, если их будет использовать юридическое лицо, ничего не оплачивая?

вот, например, программа google earth бесплатная, но тур агентства могут ее использовать только за $$

Автор: EgoBrain 13.2.2009, 09:54
Как программно нажать клавишу Alt? Нашел класс KeySend, но там метод только строку принимает, а Alt в строку не загонишь.

Автор: Abigail 14.2.2009, 00:34
Цитата(Xao @  12.2.2009,  22:33 Найти цитируемый пост)
может ли юридическое лицо использовать msi 3.1, .net framework 3.5 и visual c# express
все это программы бесплатные для физического лица, могут ли быть проблемы, если их будет использовать юридическое лицо, ничего не оплачивая?

Может, конечно.

Автор: Kolovorot 14.2.2009, 22:24
Как создать файл с расширением .NETMODEL.
В книге Э.Троелсана: <<
Код

using System;
namespace AirVehicles
{
    public class Ufo
        {
            public void AbductHuman()
                {
                    Console.WriteLine("Resistance is futile");
                }
        }
}


Чтобы скомпилировать этот класс в .NET-модуль, перейдите в папку, содержащую файл ufo.cs, и выполните следующую команду для запуска компилятора C#(параметр model флага /target заставляет программу csc.exe создать NETMODEL-, а не DLL- или EXE-файл):  csc.exe /t:model ufo.cs>>
 Я не понимаю как выполнить действие написанное после кода. Распишите, пожалуйста, поподробней.

Автор: Partizan 14.2.2009, 22:48
Kolovorot, надо командную строку Visual Studio запустить и там ввести csc.exe /t:model PATH_TO_UFO_CS/ufo.cs

Автор: Kolovorot 14.2.2009, 23:01
Цитата(Partizan @ 14.2.2009,  22:48)
Kolovorot, надо командную строку Visual Studio запустить и там ввести csc.exe /t:model PATH_TO_UFO_CS/ufo.cs

А где её взять и как запустить?

Автор: Partizan 14.2.2009, 23:35
Kolovorot, ПУСК \Программы\Microsoft Visual Studio 2008\Visual Studio Tools

Автор: EgoBrain 20.2.2009, 03:25
Что такое debug-версия приложения, и что такое release-версия, и чем они отличаются? (Действительно в тему smile )

Автор: DVariuS 20.2.2009, 10:03
Debug - версия для отладки, release - для поставки конечному пользователю. Из release-версии при компиляции удаляется отладочная информация и оптимизируется код.

Автор: EgoBrain 20.2.2009, 15:36
Цитата(DVariuS @ 20.2.2009,  10:03)
Debug - версия для отладки, release - для поставки конечному пользователю. Из release-версии при компиляции удаляется отладочная информация и оптимизируется код.

Хм, а что именно оптимизируется? Я щас свой 202 Килабайтовый экзешник в релиз сделал, он уменьшился на 2 Кб тока.

Автор: v_enom 21.2.2009, 01:36
Скажите можно ли менять базовые классы, такие как From или TabControl???

есть компонент TabControl и в нем динамически создаю странички TabPages с выборкой из базы.

в классе  MainForm:Form
методом
Код

private void ShowDataTableOnNewPage(string tableName, DataTable dataTable)
        {
            TabPage newPage = new TabPage(tableName);
            
                newPage.DoubleClick += new System.EventHandler(newPage_DoubleClick);   // вот тут присваиваю событие на двойной клик. по нему у меня должно все закрываться
            DataGridView dataGrid = new DataGridView();
                dataGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
                dataGrid.Dock = System.Windows.Forms.DockStyle.Fill;
                dataGrid.Location = new System.Drawing.Point(0, 0);
                dataGrid.Size = new System.Drawing.Size(787, 536);


            tabControl1.TabPages.Add(newPage);
            newPage.Controls.Add(dataGrid);
            dataGrid.DataSource = dataTable.DefaultView;
        }


Надо реализовать закрытие лишних tabPages (ну как везде это делается, в том же Visual Studio вкладки закрываются)
не могу придумать как послать аргумент, указывающий какую именно вкладку закрывать в функцию:

Код

private void newPage_DoubleClick(object sender, EventArgs e)
        {
            tabControl1.Controls.Remove(  вот сюда бы послать newPage или ее индекс... );
        }


пришла совсем уж дикая на мой взгляд  идея - редактировать базовый класс tabContorol...
или может как-то с   newPage.DoubleClick += new System.EventHandler(newPage_DoubleClick); можно послать номер нужной странички???

Автор: EgoBrain 21.2.2009, 05:38
Цитата(v_enom @ 21.2.2009,  01:36)
Скрытый текст
Скажите можно ли менять базовые классы, такие как From или TabControl???

есть компонент TabControl и в нем динамически создаю странички TabPages с выборкой из базы.

в классе  MainForm:Form
методом
Код

private void ShowDataTableOnNewPage(string tableName, DataTable dataTable)
        {
            TabPage newPage = new TabPage(tableName);
            
                newPage.DoubleClick += new System.EventHandler(newPage_DoubleClick);   // вот тут присваиваю событие на двойной клик. по нему у меня должно все закрываться
            DataGridView dataGrid = new DataGridView();
                dataGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
                dataGrid.Dock = System.Windows.Forms.DockStyle.Fill;
                dataGrid.Location = new System.Drawing.Point(0, 0);
                dataGrid.Size = new System.Drawing.Size(787, 536);


            tabControl1.TabPages.Add(newPage);
            newPage.Controls.Add(dataGrid);
            dataGrid.DataSource = dataTable.DefaultView;
        }


Надо реализовать закрытие лишних tabPages (ну как везде это делается, в том же Visual Studio вкладки закрываются)
не могу придумать как послать аргумент, указывающий какую именно вкладку закрывать в функцию:

Код

private void newPage_DoubleClick(object sender, EventArgs e)
        {
            tabControl1.Controls.Remove(  вот сюда бы послать newPage или ее индекс... );
        }


пришла совсем уж дикая на мой взгляд  идея - редактировать базовый класс tabContorol...
или может как-то с   newPage.DoubleClick += new System.EventHandler(newPage_DoubleClick); можно послать номер нужной странички???

У класса tabControl есть свойство SelectedIndex - тобишь открытая страница (или SelectedTab), как я понимаю кнопка зыкрытия страницы находится на смой странице, значит при ее нажатии SelectedIndex присваивается нужное значение, получаем:
Код

private void OnCloseButtonClick(object sender, EventArgs e)
{
    tabControl1.Controls.Remove(tabControl1.SelectedTab);
}


И сразу же в ответе свой вопрос задаю:
Как сделать чтоб событие формы OnResize там или OnSizeChange распространялось только на ее высоту?

Автор: v_enom 21.2.2009, 10:40
можат написать отдельную функцию onSelectedSizeChange 
которая также будет менять только sectedTab ?
и ее уже делегировать в зависимости от потребности.


PS черт, я не то событие выбрал для закрывания tabPage.... даблклик для нее это если по всей форме щелкать а не по самой закладке с именем этой самой закладки (а мне нужно именно по этому имени щелкать и закрывать....) какое событие должно соттветсвовать "заголовку" этой самой tabPage? 

Автор: v_enom 21.2.2009, 11:11
ой ...вот это я туплю.....во всех редакторах, где есть закладки, имеются еще и кнопки  -- [] X  )))))) вот по ним и закрваются странички.
только где брать эти кнопки? что это за контрол?

Автор: Kolovorot 23.2.2009, 20:37
Можно ли в командной строке перейти в папку, которую не содержит исходная папка? Например дано: D:/vasy, а нужно D:/Vasiliy.

Автор: Partizan 23.2.2009, 20:52
Kolovorot, cd D:\Vasily

Автор: EgoBrain 24.2.2009, 13:06
Можно пример использования System.Threading.Timer? Создание, запуск, исполнение.

Добавлено @ 13:21
Мне нада просто в нем проверять значение одной глобальной переменной и изменить свойство одного котрола и все, а обычный таймер в моем проекте не работает.

Автор: Partizan 24.2.2009, 13:55
EgoBrain, MSDN всё ещё существует... http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx

Автор: EgoBrain 25.2.2009, 03:35
Цитата(Partizan @ 24.2.2009,  13:55)
EgoBrain, MSDN всё ещё существует... http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx

Да заходил я туда, ничего не понял, английский слабоват, а по коду не смог под свою задачу пример адоптировать. :( ВОт хочу тут по-русски объяснение получить  smile 

Автор: Partizan 25.2.2009, 11:03
EgoBrain, http://msdn.microsoft.com/ru-ru/library/system.threading.timer.aspx

Автор: Kolovorot 25.2.2009, 15:14
Опять вопрос по командной строке. Из книги э.Троелсена: Выполните следующую команду для создания файла под названием MyTestKeyPair.snk: sn -k MyTestKeyPair.snk . Ничего не выходит и пишет, что sn  не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

Автор: Partizan 25.2.2009, 15:27
Kolovorot, утилита sn лежит в %PROGRAM_FILES%Microsoft SDKs\Windows\%SDK_VERSION%\bin\

Автор: Kolovorot 25.2.2009, 15:31
 smile Её там не оказалось. Кто-нибудь может прислать утилиту sn, пожалуйста?
Partizan благодарю.

Автор: Partizan 25.2.2009, 16:12
см. вложенный файл

Автор: Kolovorot 25.2.2009, 19:11
Как в командной строке с одного диска перейти в другой. Например: дано D:\vasy, нужно С:\pety. С помощью cd не получается

Добавлено @ 19:17
Цитата(Partizan @ 25.2.2009,  16:12)
см. вложенный файл

Положил sn  в папку C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin, но продожает выскакивать та же ошибка. smile 

Автор: Partizan 25.2.2009, 19:22
Kolovorot, достаточно просто вызвать cmd и драг-н-дропнуть туда файл sn.exe

Автор: Kolovorot 25.2.2009, 19:27
Цитата(Partizan @ 25.2.2009,  19:22)
Kolovorot, достаточно просто вызвать cmd и драг-н-дропнуть туда файл sn.exe

Я точно ламер, ибо ничего не понял. У меня получилось!!! Только все по кривому. Наверное это из-за того, что я так криво VS устанавливал(не было ни ildasm ни sn).
Я подумал раз в командной строке изначально адрес D:\vasy\VC\, взял и поместил sn в D:\vasy\VC\bin.
 Но вопрос остался как с диска D перейти на диск С?

Ego Brain, благодарю. Самому даже смешно стало, что такого не знаю.

Автор: EgoBrain 26.2.2009, 04:18
Цитата(Kolovorot @ 25.2.2009,  19:27)
Но вопрос остался как с диска D перейти на диск С?

Команда: "C:", потом Enter.
http://pic.ipicture.ru/uploads/090226/rOMiL6UXBp.jpg

Автор: contramundum 27.2.2009, 12:59
Цитата(Kolovorot @  25.2.2009,  19:27 Найти цитируемый пост)
Но вопрос остался как с диска D перейти на диск С?

по-моему, это вопрос не в тему " .NET для новичков", а в тему "Компьютер для новичков" smile 

Автор: Evoke 27.2.2009, 13:35
Почему окно не закрашивается?
Знаю, что можно в XAML прописать <Grid Name =""></Grid>.
Почему-то кодом не получается  smile 

Код

private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Grid gr1 = new Grid();
            LinearGradientBrush brush = new LinearGradientBrush();
            GradientStop grad1 = new GradientStop();
            grad1.Offset = 0;
            grad1.Color = Colors.Red;
            brush.GradientStops.Add(grad1);
            GradientStop grad2 = new GradientStop();
            grad2.Offset = 0.5;
            grad2.Color = Colors.Indigo;
            brush.GradientStops.Add(grad2);
            GradientStop grad3 = new GradientStop();
            grad3.Offset = 1;
            grad3.Color = Colors.Violet;
            brush.GradientStops.Add(grad3);       
            gr1.Background = brush;        

        }


XAML код простой.

Код

<Window x:Class="Ts.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="478.38" Loaded="Window_Loaded"> 
</Window>

Автор: BestRoot 3.3.2009, 19:07
привет всем.
Вопрос по истене ламерский, как на C# перезагрузить комп ?


Автор: 1datr 3.3.2009, 22:13
Надо подтащить календарик прямо к текущей ячейке и потом его раскрыть как будто при нажатии на ячейку он выпадает
Код

Rectangle CellBounds = dataGridView5.CurrentCell.ContentBounds;                
//dateTimeOnGridPicker.Bounds = CellBounds;

dateTimeOnGridPicker.Visible = true;
//dateTimeOnGridPicker.Focus(); 

dateTimeOnGridPicker.Left = CellBounds.Left;
dateTimeOnGridPicker.Top = CellBounds.Top + dataGridView5.Top;
dateTimeOnGridPicker.Width = CellBounds.Width;
                
dateTimeOnGridPicker.Update();

Но к ячейке контрол не подтаскивается 

Автор: DVariuS 4.3.2009, 12:21
Цитата(BestRoot @ 3.3.2009,  19:07)
привет всем.
Вопрос по истене ламерский, как на C# перезагрузить комп ?

Самый простой способ - использовать командную строку Windows:
Код

using System.Diagnostics;

...

Process proc = new Process();
proc.StartInfo.Arguments = "/c shutdown -r -t 0";
proc.StartInfo.FileName = "cmd";
proc.Start();


Автор: Partizan 4.3.2009, 12:52
Evoke, У вас Грид из кода не добавляется в коллекцию дочерних контролов окна...

Цитата

private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Grid gr1 = new Grid();
            LinearGradientBrush brush = new LinearGradientBrush();
            GradientStop grad1 = new GradientStop();
            grad1.Offset = 0;
            grad1.Color = Colors.Red;
            brush.GradientStops.Add(grad1);
            GradientStop grad2 = new GradientStop();
            grad2.Offset = 0.5;
            grad2.Color = Colors.Indigo;
            brush.GradientStops.Add(grad2);
            GradientStop grad3 = new GradientStop();
            grad3.Offset = 1;
            grad3.Color = Colors.Violet;
            brush.GradientStops.Add(grad3);       
            gr1.Background = brush;        
            this.AddChild(gr1);
        }



1datr, в Вашем случае правильнее было бы реализовать собственного наследника DataGridViewColumn...

Автор: Kolovorot 7.3.2009, 13:50
Можно ли получить доступ к изменению поля только для чтения?

Автор: DVariuS 7.3.2009, 14:39
Цитата

Можно ли получить доступ к изменению поля только для чтения?

Если речь идет о библиотечных классах (к исходному коду которых вы не имеете доступа) - нет.

Автор: Kolovorot 7.3.2009, 16:57
У меня при запуске приложений из VS появляется окошко OUTPUT со следующей информацией: 
'Kologod.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'Kologod.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\9.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'Kologod.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'Kologod.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'Kologod.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'Kologod.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\9.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'Kologod.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\9.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'Kologod.vshost.exe' (Managed): Loaded 'D:\Николай\Visual Studio2008\projects\Kologod\Kologod\bin\Debug\Kologod.vshost.exe', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'Kologod.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Core\3.5.0.0__b77a5c561934e089\System.Core.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'Kologod.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Xml.Linq\3.5.0.0__b77a5c561934e089\System.Xml.Linq.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'Kologod.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Data.DataSetExtensions\3.5.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'Kologod.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_32\System.Data\2.0.0.0__b77a5c561934e089\System.Data.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'Kologod.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
The thread '<No Name>' (0xfd8) has exited with code 0 (0x0).
The thread '<No Name>' (0xfcc) has exited with code 0 (0x0).
'Kologod.vshost.exe' (Managed): Loaded 'D:\Николай\Visual Studio2008\projects\Kologod\Kologod\bin\Debug\Kologod.exe', Symbols loaded.
'Kologod.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\mscorlib.resources\2.0.0.0_ru_b77a5c561934e089\mscorlib.resources.dll'
The program '[3604] Kologod.vshost.exe: Managed' has exited with code -1073741510 (0xc000013a).


Перед этим в папке Bin удалил exe-файл. В чем причина появления Output?

Автор: DVariuS 7.3.2009, 21:45
А что именно Вас смущает? Закройте окошко Output, и оно больше не будет появляться.

Автор: Kolovorot 7.3.2009, 22:15
Цитата(DVariuS @ 7.3.2009,  21:45)
А что именно Вас смущает? Закройте окошко Output, и оно больше не будет появляться.

Я его удалил, но оно всё время стало появляться при запуски любого приложения из VS после того как я удалил из папки Bin exe - файл выполняющий следующий код:
Код

class Program
    {


        static void Main(string[] args)
        {
            Console.WriteLine(DateTime.Now);
            Console.ReadLine();
        }
    }

 Причем exe -файл выполнял этот же код, когда я изменял код на другой(Это стало причиной его удаления).
Что в этом окошке за информация(OutPut)?


Всё сам разобрался smile 

Автор: Kolovorot 9.3.2009, 20:45
Есть код в библиотеке:
Код

/// <summary>
        /// Constructor
        /// </summary>
        /// <param name="year">The Year(from 1 to 12408)</param>
        /// <param name="day">The day(from 1 to the number of days in month)</param>
        /// <param name="month">The Month (from 1 to 12)</param>
        public KoloGod(int year, int month, int day)
        {

            if (year > GMembs.maxYear || year < GMembs.minYear)
            {
                YearException yEx = new YearException();
                throw yEx;
            }

            this.year = year;

            if (month < 0 || month > 12)
            {
                MonthException mEx = new MonthException();
                throw mEx;
            }

            this.month = month;

            int days = DaysInMonth(year, month);
            if (day > days || day < 0)
            {
                DayException dEx = new DayException(month, year);
                throw dEx;
            }

            this.day = day;


        }


Почему когда я подсоединяю ее к приложению, комментарии для данного конструктора не появляется, и что нужно делать. что бы они появились? 

Автор: Abigail 9.3.2009, 21:07
Задачник какой-нибудь существует для C#?

Автор: Kolovorot 9.3.2009, 21:21
Цитата(Abigail @ 9.3.2009,  21:07)
Задачник какой-нибудь существует для C#?

Сам не читал - http://www.infanata.org/computers/prog/1146097454-c-v-zadachakh-i-primerakh.html.

Автор: Abigail 10.3.2009, 00:37
Kolovorot, спасибо. 

Автор: EgoBrain 10.3.2009, 03:53
Обычно при работе в VS я на 100% полагаюсь на ее подсказки и замечания, но тут возник вопрос: у когонить бывало ошибочным предупреждение "The field 'SomeField' is assigned but its value is never used" (то есть на самом деле поле используется в коде, но студия подчеркивает его) или еще какие-нить недочеты студии?

Автор: PashaPash 10.3.2009, 07:50
EgoBrain, этот warning не значит что поле не используется в коде. Он значит что ты где-то вызываешь SomeField = someValue, но никогда не используешь сохраненное в SomeField значение. Ложное срабатывание ни разу не видел.
ЗЫ А багов в студии много - когда-то компилятор падал даже от строчки const string[] str = null; smile

Автор: Kolovorot 10.3.2009, 20:47
Каким инструментом в VS можно создать на форме подобные закладки? 


http://ipicture.ru/
Благодарю, DVariuS

Автор: DVariuS 10.3.2009, 21:01
Kolovorot
TabControl

Автор: Kolovorot 10.3.2009, 22:33
Можно ли в приведённом ниже коде получить доступ из arListWord к полю объекта класса Word?
Код

public class Word
    {
        public string a;
        public string b;

        public Word(string a, string b)
        {
            this.a = a;
            this.b = b;
        }
        public Word() { }
    }

    class Program
    {
        static void Main(string[] args)
        {
            

            ArrayList arListWord = new ArrayList();
            arListWord.Add(new Word("A","B"));
            

        }
    }

Автор: EgoBrain 11.3.2009, 02:56
Цитата(Kolovorot @ 10.3.2009,  22:33)
Можно ли в приведённом ниже коде получить доступ из arListWord к полю объекта класса Word?
Код

public class Word
    {
        public string a;
        public string b;

        public Word(string a, string b)
        {
            this.a = a;
            this.b = b;
        }
        public Word() { }
    }

    class Program
    {
        static void Main(string[] args)
        {
            

            ArrayList arListWord = new ArrayList();
            arListWord.Add(new Word("A","B"));
            

        }
    }

Да.
Код

Word wrd = (Word)arListWord[0];
MessageBox.Show(wrd.a + "\n" + wrd.b);

Автор: APXEOLOG 11.3.2009, 07:33
1. Как скачать файл через интернет?

2. Есть ли встроенные классы для создания\чтения конфигурационных файлов?(INI, cfg, ...)

Автор: APXEOLOG 11.3.2009, 16:03
Только начал активно изучать сишарп и сразу ламерский вопрос) (третий уже)
Код

        private void Form1_Load(object sender, EventArgs e)
        {
            TimeTable Tt = new TimeTable();
            label1.Text = Tt.GetWeekOfYear();
        }


А как мне использовать этот же экземпляр в другой функции? Мне нужно сделать
Код

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            Tt.SelectedOption = 0;
        }


А нельзя(

Автор: SaS1 11.3.2009, 19:12
APXEOLOG

Создай этот экземпляр как поле класса, в котором ты эти методы объявляешь, а не локально в методе. Доступ к нему через свойство.

Автор: 666TEHb666 11.3.2009, 22:13
Здравствуйте.
Появился один вопрос.
Хочу чтобы при вводе нецифровой клавиши или знака "минус"  в textbox ввод этой клавиши отменялся. Поюзал MSDN понял что надо использовать обработчик события KeyDown и ставить значения SuppressKeyPress в true.Но почему то не получатся на практике(вылезает ошибка.

Пишу:
Код

    private: System::Void textBox1_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
                 Char c=Convert::ToChar(e->KeyCode);
                 if( ((c<48)||(c>57)) && (c!=45) )
                     System::Windows::Forms::KeyEventArgs::SuppressKeyPres::set(true);


Ошибка:             }
error C2597: illegal reference to non-static member 'System::Windows::Forms::KeyEventArgs::SuppressKeyPress'

Что не так?

P.S. если не та тема,приношу извинения.

Автор: 666TEHb666 11.3.2009, 22:29
Аа,дощло до идиота))
Надо через
Код

    private: System::Void textBox1_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
                 Char c=Convert::ToChar(e->KeyCode);
                 if( ((c<48)||(c>57)) && (c!=45) )
                     e->SuppressKeyPress::set(true);
             }


делать...правда логику ща подредактю,еще про некоторые клавиши забыл...

Извините за пост smile 


M
THandle
Не забываем использовать выделение кода

Автор: EgoBrain 12.3.2009, 05:17
Можно ли изменить backcolor у таких компанентов как: OpenFileDialog, SaveFileDialog и др.?

Автор: EgoBrain 12.3.2009, 05:52
Как отследить какая кнопка была нажата в FolderBrowserDialog?

Автор: DVariuS 12.3.2009, 10:06
Цитата(EgoBrain @ 12.3.2009,  04:52)
Как отследить какая кнопка была нажата в FolderBrowserDialog?

Метод ShowDialog() классов, наследуемых от CommonDialog, возвращает DialogResult - перечисление в котором указана нажатая пользователем кнопка.


Автор: APXEOLOG 12.3.2009, 15:17
Как узнать по какому Url идем webBrowser при событии Navigating?

Автор: DVariuS 12.3.2009, 15:38
Цитата(APXEOLOG @ 12.3.2009,  14:17)
Как узнать по какому Url идем webBrowser при событии Navigating?

Смотри WebBrowserNavigatingEventArgs.Url

Автор: APXEOLOG 12.3.2009, 16:04
Вопрос по кодировкам: я читаю страницу
Код

            string BufS = ct.DownloadString(e.Url);


А на выходе у меня вместо русского языка сплошной крякозябр...Как сделать по нормальному?)

Автор: APXEOLOG 13.3.2009, 17:20
Вопрос по .dll
Вот написал я дллку, как мне ее теперь подключить(в самом коде). Дллка лежит в папке с программой. 
И как работать с классами из дллки?

Подскажите, или киньте ссылку на литературу.

Автор: lam0x7C4 13.3.2009, 19:28
Цитата(APXEOLOG @ 13.3.2009,  17:20)
Вопрос по .dll
Вот написал я дллку, как мне ее теперь подключить(в самом коде). Дллка лежит в папке с программой. 
И как работать с классами из дллки?

Подскажите, или киньте ссылку на литературу.

http://msdn.microsoft.com/ru-ru/library/ky3942xh.aspx

Автор: Kolovorot 14.3.2009, 15:26
Цитата(APXEOLOG @ 13.3.2009,  17:20)
Вопрос по .dll
Вот написал я дллку, как мне ее теперь подключить(в самом коде). Дллка лежит в папке с программой. 
И как работать с классами из дллки?

Подскажите, или киньте ссылку на литературу.

В Visual Studio выбираешь project->add reference->browes добавляешь бибилиотеку. В заголовке программы пишешь using <название программы>

Автор: EgoBrain 17.3.2009, 06:49
Как отменить закрытие формы, можно ли это сделать в OnFormClosing? Например в OnFormClosing я вывожу MessageBox с вопросом, если "Да", то продолжить, если "Нет" то отменить закрытие формы.

Автор: APXEOLOG 17.3.2009, 07:51
Цитата(EgoBrain @  17.3.2009,  06:49 Найти цитируемый пост)
Как отменить закрытие формы, можно ли это сделать в OnFormClosing? Например в OnFormClosing я вывожу MessageBox с вопросом, если "Да", то продолжить, если "Нет" то отменить закрытие формы. 


Просто закрытие, без мессаджа:
Код

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
        }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)