Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET

Автор: Xttx
Дата сообщения: 27.02.2009 13:27
Lazy KoT
System.Text.RegularExpressions.MatchCollection _
_.item(n)
{System.Text.RegularExpressions.Match}
Captures: {System.Text.RegularExpressions.CaptureCollection}
Empty: {System.Text.RegularExpressions.Match}
Groups: {System.Text.RegularExpressions.GroupCollection}
Index: 0 {int32}
Length: 7 {int32}
Success: True {boolen}
Value: "~10001~" {system.string}

Мне нужно объеденить в одну строку параметр "Value" из всех итемов коллекции.
Аналогично такому спопсбу:
Dim rm As System.Text.RegularExpressions.MatchCollection

dim a as string = ""
For Each i As System.Text.RegularExpressions.Match In rm
a = a + i.Value
Next
Автор: Monvid
Дата сообщения: 27.02.2009 13:27
Доброго всем=)

Подскажите как реализовать вызов ещё одной формы(она объявлена и создана), при нажатии на кнопу или т.п.?

Спасибо
Автор: Lazy KoT
Дата сообщения: 27.02.2009 13:35
Monvid
Смотри Form.Show, Form.ShowDialog
Автор: Monvid
Дата сообщения: 27.02.2009 13:44
Всё, разобрался вот это как.
На пример требуется вызов формы через MenuStrip:


Код:
private void newToolStripMenuItem_Click(object sender, EventArgs e)
{

Form2 myForm;
myForm = new Form2();
myForm.Show();

}

Автор: Lazy KoT
Дата сообщения: 27.02.2009 17:26
Xttx

Код: Dim matches As System.Text.RegularExpressions.MatchCollection
...
String.Join("", (From match In matches.Cast(Of Match)() Select match.Value).ToArray())
Автор: Xttx
Дата сообщения: 27.02.2009 18:06
Lazy KoT
Отличног выглядит! Я именно это и имел в виду! Ибо вряд ли Join можно будет непосредственно в запросе произвести, запрос по любому коллекцию выдаст, только в массиве строк (ну я так думаю). А уж как его получить, не суть.
Кто-то на форуме микрософта решал какую-то задачу типа сортировки массива при одновременном удалении из него чего-то там по условию использовавшему в качестве операндов другие элементы того-же массива. Минимум из того что ему порекоммендовали было два вложенных цикла...
А потом пришел их технарь, и написал решение в одну строчку
Вот я к такому, собственно и стремлюсь, а время выполнения, для коллекции из дюжины элементов - это не главный фактор.
Спасибо тебе ещё раз!
Автор: Monvid
Дата сообщения: 27.02.2009 20:06
Ребята, если не сложно, подскажите в чём я не прав при задании гриду кол-ва строк?


Код:
Int32 temp_1;
temp_1 = Convert.ToInt32(this.numericUpDown1.Value);
for (int i = 0; i < temp_1;temp_1++)
{
dataGridView1.Rows.Add(i);//// Матерится тут


}
Автор: Lazy KoT
Дата сообщения: 27.02.2009 20:22
Xttx
И тебе спасибо, хоть на LINQ немного посмотрел. (:

Monvid
Сначала колонки добавить нужно в грид.
Автор: BaluBig
Дата сообщения: 01.03.2009 11:16

Цитата:
for (int i = 0; i < temp_1;temp_1++)
Интересно, закончится ли когда-нибудь цикл, если вместо переменной цикла i инкрементить temp_1 ?


Добавлено:
Это раз.
Во-вторых.
Add(Int32) Adds the specified number of new rows to the collection.
При первой итерации цикла i == 0. Попытка добавить 0 строк вызывает резонное недоумение в виде ArgumentOutOfRangeException.
В третьих. А зачем цикл вообще? Вызов .Add(10) добавит 10 новых строк. Или нужно было что-то другое?
Автор: Lazy KoT
Дата сообщения: 01.03.2009 14:04
BaluBig, глазастый (;

Цитата:
Интересно, закончится ли когда-нибудь цикл
Закончится на Int32.MaxValue + 1, если checked не стоит, иначе будет OverflowException

Я так понял что нужно добавить n строк с цифрами до numericUpDown1.Value, хотя и тогда нужно int к object приводить.
Автор: Monvid
Дата сообщения: 01.03.2009 18:26
Всем привет=)
Вот такой ещё вопросик


Код:
for (int i = 0; i <=n-1; i++)
{
array_1[i] = Convert.ToInt32(this.dataGridView1.Rows[0].Cells[i].Value.ToString());
MessageBox.Show(array_1[i].ToString());

}
Автор: BaluBig
Дата сообщения: 01.03.2009 18:50
Monvid
Должно работать. Если все в порядке со значением переменной n. В данном случае я бы ее определил как
Код: int n = dataGridView1.Rows[0].Cells.Count;
Автор: Monvid
Дата сообщения: 01.03.2009 19:20
Спасибо=) Всё работает. не материт=) Определил n как Вы посоветовали, убрал ToString но....
Теперь значение последней ячейки в MessageBox показывает 0.....,что бы я туда не вводил...
Автор: BaluBig
Дата сообщения: 02.03.2009 09:32

Цитата:
Теперь значение последней ячейки в MessageBox показывает 0.....,что бы я туда не вводил...
Должно работать правильно. Вот код (ну что бы не вводить значения руками я их заполнил программно). На форме грид и кнопка.

Код:
public Form1()
{
InitializeComponent();

dataGridView1.Rows.Add();
int n = dataGridView1.Rows[0].Cells.Count;
for (int i = 0; i < n; i++) dataGridView1.Rows[0].Cells[i].Value = i + 1;
}

private void button1_Click(object sender, EventArgs e)
{
int n = dataGridView1.Rows[0].Cells.Count;
int[] array_1 = new int[n];

for (int i = 0; i < n; i++)
{
array_1[i] = Convert.ToInt32(this.dataGridView1.Rows[0].Cells[i].Value);
MessageBox.Show(array_1[i].ToString());
}
}
Автор: V0lt
Дата сообщения: 02.03.2009 18:09
Хотел сделать контрол на основе TexBox, но с нек. изменениями. Нужно сделать MaxLength = 8 и игнорировать все вводимые символы кроме цифр (думаю сделать через KeyPress).
Вроде просто, но раньше ничего подобного не делал и не въезжаю как надо (на все мои конструкции компилятор ругается )
Может кто примерчик подкинет?
Автор: feor
Дата сообщения: 02.03.2009 19:20
V0lt
Как-то так:


Код: public class CoolTextBox : TextBox
{
public CoolTextBox()
{
base.MaxLength = 8;
}

protected override void OnKeyPress(KeyPressEventArgs e)
{
if (!char.IsNumber(e.KeyChar))
{
e.Handled = true;
}

base.OnKeyPress(e);
}
}
Автор: V0lt
Дата сообщения: 02.03.2009 20:56
feor
Спасибо!
буду разбираться...

И еще. Какое исключение, кроме TextChanged, срабатывает когда я делаю вставку посредством "Ctrl+V"? Мне нужно блокировать такую вставку если в вставляемом тексте содержатся буквы.
Автор: feor
Дата сообщения: 02.03.2009 22:23
V0lt
Сорри, что придираюсь, но событие, а не исключение


Код: public class CoolTextBox : TextBox
{
private const int WM_PASTE = 0x0302;

protected override void OnKeyPress(KeyPressEventArgs e)
{
if (!char.IsNumber(e.KeyChar) && e.KeyChar != (char)22)
{
e.Handled = true;
}

base.OnKeyPress(e);
}

protected override void WndProc(ref Message m)
{
if (m.Msg == WM_PASTE)
{
string pastedText = Clipboard.GetText().Substring(0, 8);
int password;
if (!Int32.TryParse(pastedText, out password))
{
return;
}
}

base.WndProc(ref m);
}
}
Автор: Lazy KoT
Дата сообщения: 02.03.2009 22:42
Или воспользоваться стандартным NumericUpDown
Автор: V0lt
Дата сообщения: 02.03.2009 23:33
feor

Цитата:
Логику реагирования на вставку можно реализовать получше, к примеру, найти в строке цифры и вставить только их.

такого не надо
пока WndProc переделал вот так

Код: private const int WM_PASTE = 0x0302;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_PASTE)
{
string pastedText = Clipboard.GetText().Trim();
int pastedValue;
if (pastedText.Length > base.MaxLength || !Int32.TryParse(pastedText, out pastedValue))
{
return;
}
}
base.WndProc(ref m);
}
Автор: GeoDim
Дата сообщения: 03.03.2009 01:58
У меня такой вопрос!
Пробую Nevron.
Как заставить активироваться нужному Nband, имя которого я чтилал из файла?


Код:
Private Sub хриновина(ByVal Name)
Dim a As NDockingPanel
Dim b As NPanelBarUC
Dim c As NPanelBar
Dim d As NBand

a = Form1.NDockManager.Panels(3)
b = a.Controls(0)
c = b.Controls(0)

Dim Count As Integer = c.Controls.Count
Dim i As Integer = 0

Do While i < Count
d = c.Controls(i)
If d.Name = Name Then


'Тут хотел прописать активацию Nband в NPanelBar
d.???????????????
типа d.Select здесь неработает

Return
End If
i += 1
Loop
End Sub

Автор: MishaDoom
Дата сообщения: 03.03.2009 09:03
Доброго времени суток!!!
Люди помогите!!! У меня такая проблема:
Переставил ОС(ХР), соответственно с ним и Visual Studio 2005, после этого некоторые проэкты, которые работаю с SQL-ными база не компилируются. Выдает ошибку:

Error    1    'The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)'    D:\VS Projects\Копия (2) BlankiPolisovSQL\BlankiPolisov\LC    BlankiPolisov

Немогу разобраться. Может у кого была похожая проблема. Подскажите как это можно побороть, может где-то уже описывали похожую проблему.
Заранее благодарен.
Автор: Lazy KoT
Дата сообщения: 03.03.2009 10:50
MishaDoom
Исключение полностью выложи.
Автор: MishaDoom
Дата сообщения: 03.03.2009 11:33
Visual Studio cannot start debugging because the debug target 'D:\VS Projects\Копия (2) BlankiPolisov\bin\Debug\BlankiPolisov.exe' is missing. Please buildthe project and retry, or set the OutputPath and AssemblyName properties appropriately to point at the correct location for the target assembly.
Автор: Lazy KoT
Дата сообщения: 03.03.2009 13:26

Цитата:
D:\VS Projects\Копия (2) BlankiPolisov\bin\Debug\BlankiPolisov.exe

Файл на месте?
Автор: MishaDoom
Дата сообщения: 03.03.2009 14:19
В том то и дело что на месте
Автор: BaluBig
Дата сообщения: 03.03.2009 16:11

Цитата:
The located assembly's manifest definition does not match the assembly reference.
Это означает, что сборка, на которую ссылается твой проект отличается по версии или strong name от той, которая присутствует фактически. Нужно либо пересоздать ссылки заново либо найти нужную версию сборки и положить куда следует.
По второму вопросу - предлагаю обойтись без русских букв в пути.
Автор: MishaDoom
Дата сообщения: 03.03.2009 16:47

Цитата:
...пересоздать ссылки заново либо найти нужную версию сборки и положить куда следует...

Если чесно, я недавно начал програмить, по этому незнаю как это сделать.
Подскажи пожалуйста где это можно посмотреть либо расскажи как это сделать.
Заранее спасибо.
Автор: Lazy KoT
Дата сообщения: 03.03.2009 16:55
MishaDoom

Цитата:
You might have AssemblyVersion values of 1.0.*, and they all change every
time you rebuild. You reference one version, then compile it and it changes,
making it not match the original client reference.

Поменяй на [assembly: AssemblyVersion("1.0.0.0")]
Автор: BaluBig
Дата сообщения: 04.03.2009 10:11
MishaDoom
У тебя, если открыть Solution Explorer, в каждом проекте есть папка References. Там видны ссылки на сборки, которые использует проект. Все, что начинается на System, наверное трогать не стоит, это ссылки на сам framework, там все должно быть нормально. Все остальные можно поудалять (по контекстному меню) и добавить заново (контекстное меню по узлу References). Ссылка с студии может быть добавлена из трех источников: GAC (вкладка .NET в дилоге добавления ссылки), произвольное место (вкладка Browse) и из текущего решения (вкладка Projects). Если у тебя один проект использует другой проект в том же решенни, то нужно пользоваться Projects, тогда студия сама будет отслеживать ссылку. Если используется просто какая-то сборка, то используем Browse.
Пока так. Если будут продолжаться проблемы - присылай весь лог.
А вообще хорошо бы книжку почитать, Дж. Рихтер CLR via C# - программирование на платформе Microsoft .NET Framework 2.0 на языке С#. Там эта кухня внутренняя подробно описана. Книжка есть, если интересно - в личку.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102

Предыдущая тема: Как удалить/добавить/отключить/включить устройство?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.