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

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

Автор: sashka01
Дата сообщения: 02.11.2009 20:02
помогите кто-то(((
Автор: BlackVetal
Дата сообщения: 03.11.2009 05:34
sashka01
Тебе вроде numetalist все написал ...

Цитата:
как сделать шрифт жирным/курсив/ выбрать размер текста... и тд

точно также как и cut\paste - только перед пасте меняеш шрифт
Автор: Lazy KoT
Дата сообщения: 03.11.2009 17:31
numetalist

Цитата:
Кто подскажет, как устроить на DirectX(C#) полноэкранный режим?
Посмотри здесь
Автор: blaro
Дата сообщения: 03.11.2009 18:43
Кто знает, как заставить RichTextBox отображать только 80 символов в строке и горизонтальную полосу прокрутки? В свойствах элемента я установил отображение обеих полос прокрутки, но вместо этого загружаемый текст заполняет строке по ширине RichTextBox'а и автоматически переносит строку.
Автор: BlackVetal
Дата сообщения: 05.11.2009 09:35
blaro
свойство "WordWrap" (вроде так называется ...)
Автор: blaro
Дата сообщения: 05.11.2009 12:43
BlackVetal
Есть такое свойство wordwrap. Cпасибо, но ты на денек опоздал.
Автор: Tacio
Дата сообщения: 06.11.2009 14:00
Народ, пишу софт по декодирование картинок, их ресайзу и отображению на контроле Image в WPF (.Net 3.5 sp1)
Вот пример части кода:

Код: private static System.Drawing.Bitmap createRawBitmap(IntPtr decoded_image_ptr, int decoded_image_size, J2K_Info info)
{
int stride = info.Width * ((info.Components == 1) ? 1 : 4);// info from J2K decoder
Bitmap resized_bitmap = new Bitmap(info.Width, 2 * info.Height);
Bitmap bitmap_from_ptr = new Bitmap(info.Width, info.Height, stride, PixelFormat.Format32bppArgb, decoded_image_ptr);
using (Graphics g = Graphics.FromImage((Image)resized_bitmap))
{
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Low;
g.DrawImage(bitmap_from_ptr, 0, 0, info.Width, 2 * info.Height);
}
return resized_bitmap;
}
Автор: blaro
Дата сообщения: 08.11.2009 17:33
Народ, взгляните пожалуйста на функцию ниже. Эта функция должна сравнивать два текстовых файла и во втором выделять отличия в тексте.

Код:
private void Compbtn_Click(object sender, EventArgs e)
{
/*Compares two files*/
string st1 = rtb1.Text, st2 = rtb2.Text;
if (rtb1.TextLength <= rtb2.TextLength)
{
int i = 0;
for (i = 0; i < rtb1.TextLength-1; i++)
{
if (rtb2.Text[i] != rtb1.Text[i])
{
rtb2.SelectionBackColor = Color.Red;
rtb2.Select(i,1);
}
}
if (rtb2.Text[i-1]!='\0')
{
for (int j = i; j <= rtb2.TextLength; j++)
{
rtb2.SelectionBackColor = Color.Red;
rtb2.Select(j, 1);
}
}
}
else
{
if (rtb1.TextLength > rtb2.TextLength)
{
int i=0;
for(i=0;i<rtb2.TextLength;i++)
{
if (rtb1.Text[i]!=rtb2.Text[i])
{
rtb2.SelectionBackColor = Color.Red;
rtb2.Select(i, 1);
}
}
}
}
}
Автор: dneprcomp
Дата сообщения: 08.11.2009 20:58
blaro
Попробуй очищать Selection после назначения цвета. И, может быть, сначала делать Select, а потом назначение цвета.
rtbX.Select(Y, 1);
rtbX.SelectionBackColor = Color.Red;

Автор: blaro
Дата сообщения: 08.11.2009 22:48
dneprcomp
Ничего не изменилось
Автор: archimed7592
Дата сообщения: 09.11.2009 03:10
blaro
Ты странно как-то сравниваешь два текста - как будто ему оставили одну и ту же длину и заменили некоторые символы на другие - очень редкий случай, надо сказать.

Также, изменения могут быть с обоих сторон (информация может как добавиться, так и удалиться).

Т.е. во-первых, тебе необходимо иметь два счётчика - один для позиции в левом, другой - в правом.
Во-вторых, при нахождении несоответствия тебе нужно явно определять - добавилась информация в правом тексте. Это не так просто сделать, как кажется с первого взгляда.
Определив характер изменения нужно выделять соответсвующий диапазон справа или слева (зависит от характера изменения) и синхронизировать позиции.

Вот примерный код (в нём предусмотрены далеко не все возможные случаи).


Код:
Color addColor = Color.LightGreen,
removeColor = Color.OrangeRed;

string t1 = rtb1.Text, t2 = rtb2.Text;

int contiguousWidth = 3;

/*Compares two files*/
int pos1 = 0, pos2 = 0;
while (pos1 < t1.Length && pos2 < t2.Length)
{
if (t1[pos1] == t2[pos2])
{ // skip matching characters
++pos1;
++pos2;
continue;
}

// determine change disposition
string piece1 = t1.Substring(pos1, Math.Min(contiguousWidth, t1.Length - pos1));
string piece2 = t2.Substring(pos2, Math.Min(contiguousWidth, t2.Length - pos2));

int m1 = t1.IndexOf(piece2, pos1);
int m2 = t2.IndexOf(piece1, pos2);

if (m1 == -1 && m2 == -1)
throw new NotImplementedException("implement it yourself");

if (m1 != -1 && m2 != -1)
{
if (m1 >= m2)
m1 = -1;
else
m2 = -1;
}

if (m1 == -1)
{ // in t2 there is new content, let's mark it green

if (m2 == pos2)
throw new Exception("something wrong");

rtb2.Select(pos2, m2 - pos2);
rtb2.SelectionBackColor = addColor;
pos2 = m2;
}

if (m2 == -1)
{ // in t2 text was deleted, let's mark it red

if (m1 == pos1)
throw new Exception("something wrong");

rtb1.Select(pos1, m1 - pos1);
rtb1.SelectionBackColor = removeColor;
pos1 = m1;
}
}

if (pos1 < t1.Length) // text left in t1 was removed in t2
{
rtb1.Select(pos1, t1.Length - pos1);
rtb1.SelectionBackColor = removeColor;
}

if (pos2 < t2.Length) // text left in t2 was added
{
rtb2.Select(pos2, t2.Length - pos2);
rtb2.SelectionBackColor = addColor;
}

Автор: blaro
Дата сообщения: 09.11.2009 22:25
archimed7592
Я ничего не понял из того, что ты написал. Зачем все усложнять? Ты знаешь, эта функция (представленная выше) это всего лишь курсовая. Я до сего дня не писал на C# большие програмы, только маленькие консольные приложения. Мне сейчас нужно что то простое, а не переписывать пол винды.
Автор: dneprcomp
Дата сообщения: 10.11.2009 03:04
blaro
Посимвольная выбирка в коде что-то смущает. Попробуй заменить строку

Код: if (rtb2.Text(i) != rtb1.Text(i))
Автор: blaro
Дата сообщения: 10.11.2009 12:02
dneprcomp
Я об этом вчера как раз думал. Что если взять из обоих текстов по строке и сравнить их посимвольно? ИМХО так будет меньше ошибок.
Автор: dneprcomp
Дата сообщения: 10.11.2009 16:26
blaro
Просто используй вложенные циклы. Один для строк. Второй для символов.
Что-то вроде

Код: for (x = 1; x < [lines quantity]; x++)
for (i = 0; i < rtb1.TextLength-1; i++)
if rtb2.Lines(X).Substring(i, 1) != rtb1.Lines(X).Substring(i, 1)
Автор: ppkp
Дата сообщения: 15.11.2009 15:24
Читаю из текстового файла и получаю крякозябры вместо русских букв. Подскажите, пожалуйста, чего не хватает?

StreamReader streamReader = new StreamReader("aa.txt");
string strLine;
while (streamReader.Peek() != -1) {
strLine = streamReader.ReadLine();
}
Автор: Denchik
Дата сообщения: 15.11.2009 15:40
ppkp
указать кодировку 1251 при создании объекта StreamReader

Код: public StreamReader(string path, Encoding encoding)

path
Type: System..::.String
The complete file path to be read.
encoding
Type: System.Text..::.Encoding
The character encoding to use.
Автор: ppkp
Дата сообщения: 15.11.2009 16:05
Спасибо, вставил
Encoding encoding = System.Text.Encoding.Default;
и заменил
StreamReader streamReader = new StreamReader("aa.txt", encoding);
Работает ! Спасибо

ЗЫ
А можно и просто так
StreamReader streamReader = new StreamReader("aa.txt", System.Text.Encoding.Default);
Спасибо
Автор: tyghr
Дата сообщения: 16.11.2009 15:06
переношу код из vb6 в vb.net
как вот это делается в .net?

ScaleX(x, Me.ScaleMode, vbPixels)
Автор: ppkp
Дата сообщения: 18.11.2009 20:15
У меня один и тот же цикл на Delphi и на C#. На C# вычисляется в 3 раза дольше.
Это так и положено (из-за Framework) или у меня чего-то не так?
Автор: Lihonosov
Дата сообщения: 19.11.2009 08:58
ppkp
Вы бы код самих циклов показали...
Автор: ppkp
Дата сообщения: 19.11.2009 13:52
Вот циклы

Код:
//Delphi
function TTopoGrid.InvDistProc(APow: double; ALines: TPoint; AStep: TPoint2D; AMin: TPoint3D): integer;
var
    row, col, pnt: integer;
    pow2: double;
    Grow, Diff: TPoint2D;
    zval, wg2, wg1: double;
begin
    Result := -1;

    pow2 := APow/2.0;
    for row:=0 to ALines.Y-1 do begin
        if Assigned(FOnCalcProgress) then FOnCalcProgress(row, ALines.Y);

        Grow.Y := AMin.Y + row*AStep.Y;
        for col:=0 to ALines.X-1 do begin
            if Assigned(FOnCalcCancel) then if FOnCalcCancel then Exit;

            Grow.X := AMin.X + col*AStep.X;

//            FindNearPoints(Grow);
            case FSearchMethod of
            smNorm: FindPoints0(Grow);
            smQuad: FindPointsN(4, Grow);
            smOct: FindPointsN(8, Grow);
            smAll: FNearPoints := FTopoData.Count;
            end;

            zval := 0.0;
            wg2 := 0.0;
            for pnt:=0 to FNearPoints-1 do begin
//                Diff.X := Grow.X - PPoint3D(FTopoData.Items[FPointsPtr[pnt]])^.X;
//                Diff.Y := Grow.Y - PPoint3D(FTopoData.Items[FPointsPtr[pnt]])^.Y;
                Diff.X := Grow.X - TopoData[FPointsPtr[pnt]].X;
                Diff.Y := Grow.Y - TopoData[FPointsPtr[pnt]].Y;
                wg1 := Power(Diff.X*Diff.X + Diff.Y*Diff.Y, pow2);
                if wg1 < MinDouble then wg1 := MinDouble;
//                zval := zval + PPoint3D(FTopoData.Items[FPointsPtr[pnt]])^.Z/wg1;
                zval := zval + TopoData[FPointsPtr[pnt]].Z/wg1;
                wg2 := wg2 + 1.0/wg1;
            end;

            if wg2 > 0.0 then
                FGrid[col][row] := zval/wg2
            else
                FGrid[col][row] := MaxDouble;
        end;
    end;
    Result := ALines.Y;
end;

//C#
        private int InvDistProc(double APow, Point ALines, Point2D AStep, Point3D AMin) {
            int row, col, pnt;
            double pow2;
            double GrowX, GrowY, DiffX, DiffY;
            double zval, wg2, wg1;

            pow2 = APow / 2.0;
            for (row = 0; row < ALines.Y; row++) {
                CalcEvent.CalcProgressHandler(row + 1, ALines.Y);

                GrowY = AMin.Y + row * AStep.Y;
                for (col = 0; col < ALines.X; col++) {
//                    if (CalcEvent.CalcCancelHandler()) return -2;

                    GrowX = AMin.X + col * AStep.X;

//                    FindNearPoints(Grow);
                    switch (FSearchMethod) {
                        case TSearchMethod.smNorm: FindPoints0(GrowX, GrowY); break;
                        case TSearchMethod.smQuad: FindPointsN(4, GrowX, GrowY); break;
                        case TSearchMethod.smOct: FindPointsN(8, GrowX, GrowY); break;
                        case TSearchMethod.smAll: FNearPoints = FTopoData.Count; break;
                    }

                    zval = 0.0;
                    wg2 = 0.0;
                    for (pnt = 0; pnt < FNearPoints; pnt++) {
                        DiffX = GrowX - FTopoData[FPointsPtr[pnt]].X;
                        DiffY = GrowY - FTopoData[FPointsPtr[pnt]].Y;
                        wg1 = Math.Pow(DiffX * DiffX + DiffY * DiffY, pow2);
                        if (wg1 < double.MinValue) wg1 = double.MinValue;
                        zval = zval + FTopoData[FPointsPtr[pnt]].Z / wg1;
                        wg2 = wg2 + 1.0 / wg1;
                    }

                    if (wg2 > 0.0)
                        FGrid[col, row] = zval / wg2;
                    else
                        FGrid[col, row] = double.MaxValue;
                }
            }
            return ALines.Y;
        }
Автор: violant
Дата сообщения: 19.11.2009 20:58
Подскажите пожалуйста
ASP.NET на C#
Описание:Пишу репорты из базы. Нужен репорт такой чтобы в селект подставлялась дата из календаря (Calendar1) на форме с SqlDataSource1

Код: <asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:hmlog_con %>"
ProviderName="<%$ ConnectionStrings:hmlog_con.ProviderName %>"
SelectCommand="SELECT hmlog.hmlog.* FROM hmlog.hmlog WHERE (eventtime LIKE '2009-10-08%')">
</asp:SqlDataSource>
Автор: EZH
Дата сообщения: 19.11.2009 21:39
violant
А в чем проблема в событии SelectionChanged присвоить нужный запрос? Что-то в таком духе:

SqlDataSource1.SelectCommand = string.Format("SELECT ... LIKE '{0:yyyy-MM-dd}%'", CalendarDate);

А еще честнее и правильнее будет в LIKE один раз определить параметр @CalendarDate, определить его в SelectParameters у SqlDataSource, и в обработчике присваивать только этот параметр в нужном формате.

Я так понял поле даты у тебя текстовое?
Автор: sashka01
Дата сообщения: 21.11.2009 16:17
народ.. помогите написать простой WORDPAD... в C#
Автор: KChernov
Дата сообщения: 22.11.2009 09:38
sashka01

Цитата:
помогите написать простой WORDPAD... в C#

Надо создать окно, в котором будет RichTextBox и куча кнопочек, на которые будут завязаны функции этого самого RichTextBox-а и их применение к выделенным частям текста.
Автор: derelict
Дата сообщения: 22.11.2009 11:25
sashka01
Посмотри тут: WordPad in C#
Автор: numetalist
Дата сообщения: 22.11.2009 14:04
Блин, уже не помню регулярные выражения с универа. Как написать шаблон для такой строки
"Начало строки или любая последовательность, обязательно пристутсвующий фрагмент, любая последовательность или конец"?
Автор: BlackVetal
Дата сообщения: 23.11.2009 05:27
ppkp
Во первых почему решил, что циклы работают медленнее на C# ? Да и потом не понятно как работают процедуры из циклов? может в них проблема?
Автор: ppkp
Дата сообщения: 23.11.2009 10:55
BlackVetal
Да по часам проверял - в Delphi 35 сек, в C# 105 сек. Процедуры тоже состоят из аналогичных циклов. Я вообще спросил - может у кого уже встречалось такое. ИМХО это из-за Framework'а.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102

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


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