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

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

Автор: svs123456789
Дата сообщения: 31.05.2010 10:48
есть WebBrowser control - как в нем подсветить все вхождения искомого слова?
(имитировать Ctrl-F) ?
Автор: Lihonosov
Дата сообщения: 31.05.2010 20:33
svs123456789

Код: private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
IHTMLDocument2 doc2 = (IHTMLDocument2)webBrowser1.Document.DomDocument;
Regex re = new Regex(str, RegexOptions.IgnoreCase);
MatchCollection mc = re.Matches(doc2.body.outerHTML); ;
int iCountMatchs = mc.Count;
if(iCountMatchs>0)
{
StringBuilder html = new StringBuilder(doc2.body.outerHTML);
String substitution = "<span style='background-color: rgb(255, 255, 0);'>" + str + "</span>";
html.Replace(str, substitution);
doc2.body.innerHTML = html.ToString();
}
}
Автор: May_Johnson
Дата сообщения: 01.06.2010 14:16
AngeL
Используй System.Diagnostics.Process.Start()
и комманду rasdial :

C:\Windows\system32\rasdial.EXE entryname [username [password|*]] [/DOMAIN:domain]
[/PHONE:phonenumber] [/CALLBACK:callbacknumber]
[/PHONEBOOK:phonebookfile] [/PREFIXSUFFIX]

C:\Windows\system32\rasdial.EXE [entryname] /DISCONNECT

пример

System.Diagnostics.Process.Start(
"rasdial", "MyConnectionName MyUserName MyPassword");
Автор: LuckyStrike
Дата сообщения: 01.06.2010 21:54
Доброго времени суток, уважаемые программисты...прошу помочь с задачкой: Реализовать в виде процедуры «Построчный алгоритм заполнения с затравкой».
вот алгоритм:
Алгоритм:
Push Затравка(x,y)
while <стек не пуст>
    Pop Пиксел(x,y)
    Пиксел(x,y)=Цвет_закраски
    Врем_x=x
    x=x+1
    while Пиксел(x,y)<>Цвет_границы
        Пиксел(x,y)=Цвет_закраски
        x=x+1
    end while
    Xправ=x-1
    x=Врем_x
    x=x-1
    while Пиксел(x,y)<>Цвет_границы
        Пиксел(x,y)=Цвет_закраски
        x=x-1
    end while
    Xлев=x+1
{ищем затравку на строке выше}
    x=Xлев
    y=y+1
    while x<=Xправ
        Флаг=0
        while (Пиксел(x,y)<>Цвет_закраски and Пиксел(x,y)<>Цвет_границы
            and x<Xправ)
            if Флаг=0 then Флаг=1
            x=x+1
        end while
        if Флаг=1 then
            if (x=Xправ and Пиксел(x,y)<>Цвет_закраски and
             Пиксел(x,y)<>Цвет_границы) then
                Push Пиксел(x,y)
            else
                Push Пиксел(x-1,y)
            end if
            Флаг=0
        end if
        Xвход=x
        while (Пиксел(x,y)=Цвет_закраски or Пиксел(x,y)=Цвет_границы)
            and (x<Xправ)
                x=x+1
        end while
        if x=Xвход then x=x+1 end if
    end while
{аналогично ищем затравку на строке ниже заполненной — y=y-1}
end while
finish
а нужно сделать в С#...вот что я сделал(можно и необязательно делать в точности как алгоритм)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;

namespace лаба5_2
{
public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();
}
void floodFillScanline(int x, int y, int newColor, int oldColor)
{
int h=0;
int w = 0;
int[,] screenBuffer=new int [0,0];
if (oldColor == newColor) return;
if (screenBuffer[x,y] != oldColor) return;

int y1;

//draw current scanline from start position to the top
y1 = y;
while (y1 < h && screenBuffer[x,y1] == oldColor)
{
screenBuffer[x,y1] = newColor;
y1++;
}

//draw current scanline from start position to the bottom
y1 = y - 1;
while (y1 >= 0 && screenBuffer[x,y1] == oldColor)
{
screenBuffer[x,y1] = newColor;
y1--;
}

//test for new scanlines to the left
y1 = y;
while (y1 < h && screenBuffer[x,y1] == newColor)
{
if (x > 0 && screenBuffer[x - 1,y1] == oldColor)
{
floodFillScanline(x - 1, y1, newColor, oldColor);
}
y1++;
}
y1 = y - 1;
while (y1 >= 0 && screenBuffer[x,y1] == newColor)
{
if (x > 0 && screenBuffer[x - 1,y1] == oldColor)
{
floodFillScanline(x - 1, y1, newColor, oldColor);
}
y1--;
}

//test for new scanlines to the right
y1 = y;
while (y1 < h && screenBuffer[x,y1] == newColor)
{
if (x < w - 1 && screenBuffer[x + 1,y1] == oldColor)
{
floodFillScanline(x + 1, y1, newColor, oldColor);
}
y1++;
}
y1 = y - 1;
while (y1 >= 0 && screenBuffer[x,y1] == newColor)
{
if (x < w - 1 && screenBuffer[x + 1,y1] == oldColor)
{
floodFillScanline(x + 1, y1, newColor, oldColor);
}
y1--;
}
}

private void panel1_Paint(object sender, PaintEventArgs e)
{
using (Bitmap bitmap = new Bitmap(500, 500))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.Clear(Color.White);
List<Point> points = new List<Point>();
for (double i = 0; i < 10; i++)
{
double dist = (i % 2 == 0) ? 100 : 50;
double x = 200 + Math.Cos(i / 10d * Math.PI * 2d) * dist;
double y = 200 + Math.Sin(i / 10d * Math.PI * 2d) * dist;
points.Add(new Point((int)x, (int)y));
}
g.DrawPolygon(Pens.Blue, points.ToArray());
}

floodFillScanline(0, 0, 330, 330);

e.Graphics.DrawImage(bitmap, 0, 0);
}
}
}
}

Автор: svs123456789
Дата сообщения: 02.06.2010 12:59
Lihonosov
спасибо конечно, но по Ctrl-F броузер еще и переходит к найденному слову
Автор: klimusu
Дата сообщения: 03.06.2010 17:18
hi.

в vs2010 создал новый веб сайт
создал таблицу
[no]
<table style="border-width: 0;">
<tr>
<td style="background-color: red; height: 100px; width: 100px;">
</td>
<td style="background-color: blue; height: 100px; width: 100px">
</td>
</tr>
</table>
[/no]
откуда берется граница между квадратами?
Автор: LuckyStrike
Дата сообщения: 03.06.2010 18:31
Нужно реализовать алгоритм Сазерленда-Коэна на C#, для пояснения алгоритма вот ссылка http://www.mari.ru/mmlab/home/kg/Lection9/3.html
а вот код, только не работает(

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Лаб_6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public System.Drawing.Graphics Gr;
private void Form1_Load(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(300, 300);
System.Drawing.Graphics Gr = Graphics.FromImage(bmp);
Gr.Clear(Color.White);
Gr.DrawRectangle(Pens.Gray, 100, 100, 100, 100);
pictureBox1.Image = bmp;
}
void end(int x, int y, ref Int32 kod, ref Int32 summ)
{
kod = 0;
summ = 0;
int xl = 0;
int xr = 0;
int yn = 0;
int yv = 0;
if (x < xl) { kod += 1; summ++; };
if (x > xr) { kod += 2; summ++; };
if (y > yn) { kod += 4; summ++; };
if (y < yv) { kod += 8; summ++; };
}

void koen(Int32 x1, Int32 y1, Int32 x2, Int32 y2, ref Int32 vid, ref Int32 kod1, ref Int32 kod2)
{
Int32 sum1 = 0, sum2 = 0;
end(x1, y1, ref kod1, ref sum1);
end(x2, y2, ref kod2, ref sum2);
vid = 2;
if (sum1 == 0 && sum2 == 0) vid = 1;
else
{
Int32 pr = kod1 & kod2;
if (pr != 0) vid = 0;
}

}

int search(Int32 kod, Int32 i)
{
if (i == 4) return kod & 8;

if (i == 3) return kod & 4;
if (i == 2) return kod & 2;
if (i == 1) return kod & 1; return 0;
}

void main()
{
Int32 x1 = Convert.ToInt32(textBox1.Text);
Int32 y1 = Convert.ToInt32(textBox2.Text);
Int32 x2 = Convert.ToInt32(textBox3.Text);
Int32 y2 = Convert.ToInt32(textBox4.Text);
Int32[] okno = new Int32[5];
okno[1] = 100;
okno[2] = 200;
okno[3] = 200;
okno[4] = 100;
Int32 flag = 1;
Double naklon = 0;
Int32 kod1 = 0, kod2 = 0;
if (x2 - x1 == 0) flag = -1;
else
{
naklon = Convert.ToDouble(y2 - y1) / Convert.ToDouble(x2 - x1);
if (naklon == 0) flag = 0;
}
for (Int32 i = 1; i <= 4; i++)
{
Int32 vid = 0;
koen(x1, y1, x2, y2, ref vid, ref kod1, ref kod2);
if (vid == 1) Gr.DrawLine(Pens.Gray, x1, y1, x2, y2);
if (vid == 0) return;
if (search(kod1, i) == (search(kod2, i))) continue;
if (search(kod1, i) == 0)
{
Int32 temp = x1; x2 = x1; x2 = temp;
temp = y1; y2 = y1; y2 = temp;
}

if ((flag != -1) && (i <= 2))
{
y1 = Convert.ToInt32(naklon * Convert.ToDouble(okno[i] - x1)) + y1;
x1 = okno[i];
}
else
{
x1 = Convert.ToInt32((1 / naklon) * Convert.ToDouble(okno[i] - y1)) + x1;
y1 = okno[i];
}

}
Gr.DrawLine(Pens.Gray, x1, y1, x2, y2);
}

private void button1_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(300, 300);
Gr = Graphics.FromImage(bmp);
Gr.Clear(Color.White);
Gr.DrawRectangle(Pens.Gray, 100, 100, 100, 100);

main();
pictureBox1.Image = bmp;
}
}
}



Автор: AngeL
Дата сообщения: 04.06.2010 07:45
May_Johnson спасибо попробую!
Автор: v1rtyaluk
Дата сообщения: 04.06.2010 14:06
Здравствуйте, я опять здесь)))
помогите с очередными вопросами:
пишу приложение, что-то типа блокнота
не могу организовать функции Найти, Найти далее, Заменить, Перейти
помогите разобраться

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

помогите организовать эти функции(для наводки, текст вводится в элемент управления textBox а заменяется на элементе richtextBox)

Буду благодарен за помощь.
C#, MSVS2008
Автор: Omicron_Persey_8
Дата сообщения: 06.06.2010 17:05
v1rtyaluk
У RichTextBox есть стандартный функционал для поиска:
int RichTextBox.Find, для MatchCase и WholeWord есть соответствующие перегрузки.
Чтобы реализовать "Найти далее", вызываешь перегрузку Find с указанием позиции начала поиска. Например, ищешь строку "один". Вызов richTextBox1.Find("один"); тебе вернул, допустим, 42. Чтобы найти место, где "один" встречается еще раз, вызываешь, richTextBox1.Find("один", 43). Ну и далее в таком разрезе. По поводу заменить все просто: Find даст позицию в тексте, длина строки поиска известна, string.Replace() тебе в руки.
Автор: v1rtyaluk
Дата сообщения: 06.06.2010 17:55
Omicron_Persey_8
с функциями найти и заменить я уже разобрался.
Никак не могу организовать "Перейти" т.е. переход к определенной линии в richTextBox.
Как это сделать???
Автор: LuckyStrike
Дата сообщения: 06.06.2010 21:28
Доброго времени суток, не могли бы вы подсказать как осуществить корректность в dataGridView? то есть и в таблицу хочу добавить данные о книги, а эта книга уже есть, и чтобы вывело сообщение об этом?
вот добавление данных в таблицу:
Book b = new Book(textBox2.Text, textBox1.Text, (comboBox1.SelectedItem as Theme),textBox3.Text,textBox4.Text);
Global.firma.CentralSafe.Book.Add(b);
int i = dataGridView1.Rows.Add();

dataGridView1.Rows[i].Cells[0].Value = b.Name;
dataGridView1.Rows[i].Cells[1].Value = b.Publish;
dataGridView1.Rows[i].Cells[2].Value = b.Theme.Name;
dataGridView1.Rows[i].Cells[3].Value = b.Cena;
dataGridView1.Rows[i].Cells[4].Value = b.cenaOpt;
а вот код для проверки:
Book b = new Book(textBox2.Text, textBox1.Text, (comboBox1.SelectedItem as Theme),textBox3.Text,textBox4.Text);

if (Global.firma.CentralSafe.Book.Contains(b))
{
Global.firma.CentralSafe.Book.Add(b);
int i = dataGridView1.Rows.Add();

dataGridView1.Rows[i].Cells[0].Value = b.Name;
dataGridView1.Rows[i].Cells[1].Value = b.Publish;
dataGridView1.Rows[i].Cells[2].Value = b.Theme.Name;
dataGridView1.Rows[i].Cells[3].Value = b.Cena;
dataGridView1.Rows[i].Cells[4].Value = b.cenaOpt;
но блин, с этим кодом проблема - даже если я введу название, издательство книги той, которой нет, а жанр введу тот который есть, то не добавиться, пишит что такая книга уже ест
Автор: BlackVetal
Дата сообщения: 07.06.2010 11:31
LuckyStrike
Я так понимаю что твой грид связан с "Global.firma.CentralSafe.Book" ? Если да, то у тебя 2 раза добавляется новая книга.
Еще: покажи код описывающий "Book" и "Global.firma.CentralSafe.Book". Тогда больше можно будет сказать что у тебя некоррктно и как лучше написать.
Автор: mrherbrooks
Дата сообщения: 07.06.2010 15:33
LuckyStrike
я бы на вашем месте подошел к решению вопроса немного по другому:
1. BindingList<Book>
2. Binding to DataGridView
3. Linq2Object
Автор: LuckyStrike
Дата сообщения: 07.06.2010 16:39
Спасибо за советы, но я уже разобрался)
Автор: blaro
Дата сообщения: 08.06.2010 13:24
Скажите, возможно ли вставить в код на Си Шарп функцию написаную на асме?
Автор: V0lt
Дата сообщения: 08.06.2010 16:05
blaro

Цитата:
Скажите, возможно ли вставить в код на Си Шарп функцию написаную на асме?

по идее нет.
Автор: KChernov
Дата сообщения: 08.06.2010 16:37
blaro

Цитата:
Скажите, возможно ли вставить в код на Си Шарп функцию написаную на асме?

В принципе можно сделать dll на С/С++, вставить в неё ассемблерную вставку и уже это вызвать из Шарпа.
Автор: Omicron_Persey_8
Дата сообщения: 10.06.2010 12:12
blaro

Цитата:
Скажите, возможно ли вставить в код на Си Шарп функцию написаную на асме?

В общем случае нет. Придется делать прокси-dll либо на C/C++, либо MC++, или на другом языке поддерживающем ассемблерные вставки.
Автор: TanteR
Дата сообщения: 10.06.2010 19:02
Доброго времени суток! Есть проблема, не могу сделать гиперссылку на записи в БД..Гиперссылки Вставляются в GridView и играют роль кнопки "скачать"..пишу сайт библиотеки...Была такая же проблема с отображением картинок, но она как-то быстро разрешилась, через <%# Eval("...") %>..но тут почему-то этим же методом не получается..Если подробнее, то в БД есть 2 поля..в олном поле прописываются пути к картинкам, в другом к книгам..Картинки выводит, а гиперссылки скачивания не делает, пишет ошибку GridView. Помогите пожалуйста...

Вот Код:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="AccessDataSource1" DataKeyNames="Author">
<Columns>
<asp:BoundField DataField="Number" HeaderText="Number" SortExpression="Number" />
<asp:BoundField DataField="NameBook" HeaderText="NameBook" SortExpression="NameBook" />
<asp:BoundField DataField="Author" HeaderText="Author" SortExpression="Author" />
<asp:BoundField DataField="Contents" HeaderText="Contents" SortExpression="Contents" />
<asp:TemplateField HeaderText="kat" SortExpression="kat">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("kat") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="kat1" SortExpression="kat1">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="<%# Eval("kat1") %>" Text="">Download</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

Заранее Спасибо!...
Автор: v1rtyaluk
Дата сообщения: 11.06.2010 22:20
Здравствуйте ребята!
1) Вот совсем заплутался.Никак не могу организовать печать из richTextBox, настройки печати и предосмотр с соблюдением форматирования текста.
Как это сделать???

2) Как узнать продолжительность wav-файла в переменную типа int для progressBar.Maximum=x; и во время воспроизведения текущую позицию использовать в качестве progressBar.Value=x2;???

Автор: Omicron_Persey_8
Дата сообщения: 11.06.2010 23:32
v1rtyaluk
Про печать немного здесь есть. А ты как аудио проигрываешь? Я, помнится, что-то связанное с Managed DirectX делал.
Автор: v1rtyaluk
Дата сообщения: 12.06.2010 15:01
Omicron_Persey_8
я сначала его записываю из внешнего устройства, потом сохраняю и получаю в переменную путь к сохраненному файлу, а потом уже:
private void startBtn_Click(object sender, EventArgs e)
{
Microsoft.DirectX.AudioVideoPlayback.Audio song = new Microsoft.DirectX.AudioVideoPlayback.Audio(путь к аудио-файлу);
song.Play();
}
Автор: nikanomo
Дата сообщения: 12.06.2010 17:50
ASP.NET
Подскажите, как изменить значение переменной, объявленной в MasterPage?

Код: using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;
using System.Data.SqlClient;

namespace WebApplication1
{
public partial class KateButik : System.Web.UI.MasterPage
{
// ...
public static int current;

protected void Page_Load(object sender, EventArgs e)
{
// ...
}
}
}
Автор: Omicron_Persey_8
Дата сообщения: 13.06.2010 08:03
v1rtyaluk
Ну тогда все просто: MSDN, источник вдохновения.
Продолжительность аудио: Audio.Duration
Текущая позиция: Audio.CurrentPosition
Автор: TanteR
Дата сообщения: 13.06.2010 09:46
Походу никто не в курсе как сделать гиперссылку на запись в таблице БД
Автор: lezval
Дата сообщения: 13.06.2010 10:52
Подскажите, как можно сериализовать в XML двумерный массив. При использовании XmlSerializer получилось только переводить в одномерный массив и сериализовать. Может есть еще какие-нибудь методы это сделать.
Автор: v1rtyaluk
Дата сообщения: 13.06.2010 12:21
Omicron_Persey_8
и с этим я тоже разобрался, просто не выходило прицепить Duration, CurrentPosition и Volume к ползункам.
пришлось остановится на обыкновенной записи звука.

и все таки есть нерешенные вопросы:
как организовать функцию "Переход"(переход к определенной строке в тексте) как в стандартном Блокноте???

и как сделать так чтоб, допустим если на форме есть richTextBox, то при изменении размера окна мышкой контрол на автомате делал тоже??а то кинул на форму ричТекстБокс - форма растягивается,а сам контрол мертво стоит в старом размере
Автор: V0lt
Дата сообщения: 13.06.2010 22:42
Подскажите, реально ли на C# сделать следующее?

Нужно через stdin получать данные, через каждые 1 МБ данных вставлять свои 100 байт и отправлять их через stdout другому процессу.
Или если проще считать из stdin 1 МБ и отправить на stdout сначала свои 100 байт, а затем полученный 1 МБ. Итак по циклу пока stdin не опустеет.

Кто-нибудь похожее делал? Пример бы
Автор: nikanomo
Дата сообщения: 14.06.2010 07:06
Задача: сделать корзину для интернет-магазина. Я написал класс Item, в котором хранятся данные о выбранном товаре (ID, название, цена, количество) и коллекцию (ArrayList), в которую заносятся объекты класса. Затем записываю коллекцию в сессию (Session["cart"]).
Проблема: когда пытаюсь обновить литер, который находится на MasterPage и выводит количество товаров в корзине, возникает ошибка:

Код: Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102

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


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