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

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

Автор: DemON_007
Дата сообщения: 28.05.2013 15:00
Andryshok
Хотелось бы все же вяснить в чем проблема, публикация непосредственно из студии все таки штука весьма удобная. Впрочем я думал что проблема известная (распространенная), ну раз нет, то и черт с ней.
inno setup данную ситуацию к слову разрешил, сваял я в нем свой простенький установщик, немного помучавшись с установкой дополнительных программ. Гибкость и ширину возможностей программы оценил, спасибо.
Автор: Sp44
Дата сообщения: 28.05.2013 15:58
Приветствую.

Я новичок в WPF+MVVM и пытаюсь построить простенькую форму для просмотра оборудования. Решение типичное: слева вертикальный список и справа форма для редактирования/создания/удаления.

Большинство полей ввода на форме привязаны к ViewModev через Binding так:

<TextBox Grid.Column="3" Grid.Row="5" HorizontalAlignment="Left" Margin="3,3,0,0" Text="{Binding Path=ActiveMachinery.ChasisSN, Mode=TwoWay}" VerticalAlignment="Top" Width="180" Grid.ColumnSpan="2" />

НО. По условию задачи оборудование может быть как куплено у постовщика, так и продано клиенту. Имеется одно универсальное поле выбора поставщика/покупателя с прикрученым AUTOCOMPLETE (xmlns:toolkitInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit" & <toolkitInput:AutoCompleteBox Name="ContragentLookup" Width="158" ItemsSource="{Binding Path=SimpleAutocomplete, Mode=OneWay}" ValueMemberPath="DisplayValue" FilterMode="Custom" ) Я использую собственный фильтр. Как только выбор подтвержден - я привязываю выбранного контрагента к модели. На форме есть Label для отображения выбранного контрагента и кнопочки управления им (удалить / просмотреть подробности / ...)
<Label Content="{Binding Path=ActiveMachinery.ContragentFriendlyView, Mode=OneWay}" Grid.Column="2" Grid.Row="2" Grid.ColumnSpan="2" Height="26" VerticalAlignment="Bottom" />


Моя проблема в том, что при навигации от записи к записи в списке слева - поле ввода контрагента продолжает содержать фрагмент строки поиска он предыдущего ввода.

Наскольно я понимаю суть MVVM подхода - все настолько абстрагировано, что при обработки некоего события внутри ViewModel не может влиять на непривязаное поле на View.

Как я могу очищать его после каждого покидания фокуса или после перехода на другую запись?


Спасибо,
Sp44
Автор: BlackVetal
Дата сообщения: 29.05.2013 06:51
DemON_007
что-то не обратил сначала на ваш пост, но ...
Да в самом проекте можно подписать его, но публикация почему затирает эти данные и встроенная служба "форточек" AppLocker (если неошибаюсь) пришибает программу.
Как сделал я - я публикую локально (каталог в самом проекте сделал), потом с помощью батника подписываю проект снова и выкладываю (копирую тупо) на сервер.
вот примерный код батника для подписания проекта под .net 4.0

Код:
SET MAGEPATH="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\"

SET SIGTOOLPATH="C:\Program Files (x86)\Windows Kits\8.0\bin\x64"


SET MAKEROOT=.\publish
SET DPLFILESBASE=%MAKEROOT%

SET CERTFILE=OM_CIS.pfx
SET CERTPASS=Kombinat

SET APPFILESBASE=%MAKEROOT%\Application Files\%APPNAME%_%APPVERS%

ECHO App:%APPNAME% ver:%APPVER% vers:%APPVERS%

%SIGTOOLPATH%\signtool sign /f OM_CIS.pfx /p Kombinat "%APPFILESBASE%\%APPNAME%.exe"

%MAGEPATH%\mage -New Application -Processor x86 -ToFile "%APPFILESBASE%\%APPNAME%.exe.manifest" -name %APPNAME% -Version %APPVER% -FromDirectory "%APPFILESBASE%"

%MAGEPATH%\mage.exe -Sign "%APPFILESBASE%\%APPNAME%.exe.manifest" -CertFile "%CERTFILE%" -Password %CERTPASS%

%MAGEPATH%\mage.exe -New Deployment -Processor x86 -Install true -ToFile "%DPLFILESBASE%\%APPNAME%.application" -AppManifest "%APPFILESBASE%\%APPNAME%.exe.manifest" -Version %APPVER% -CertFile "%CERTFILE%" -Password %CERTPASS%

%MAGEPATH%\mage.exe -Sign "%DPLFILESBASE%\%APPNAME%.application" -CertFile "%CERTFILE%" -Password %CERTPASS%
Автор: Mextrom
Дата сообщения: 30.05.2013 11:43
Sp44
Можно код? А то у меня фантазии не хватает представить, как всё это выглядит.
Автор: ktoto1
Дата сообщения: 02.07.2013 08:36
День добрый. Изучаю C# по книжке. У меня простой вопрос . Допускается ли в С# использовать ref и out вместе в рамках одного метода ?
Автор: Sp44
Дата сообщения: 02.07.2013 13:50
Да. Ref - это просто пометка, что значение будет передаваться по референсу и в общем то никак не связано с другими параметрами. Едиественное что нельзя одновременно использовать ref и out для одного и того же параметра.
Автор: BlackVetal
Дата сообщения: 16.07.2013 09:02
VS2012.
Кто нить с таким сталкивался - ситуация такая:
Есть Решение в котором несколько проектов, один из проектов публикуется, у этого Решения есть несколько конфигураций - Debug, Release и Game. Последняя конфигурация - предназначена для обучения персонала работать с программой. Задумка такая - в рабочую версию публикуется Release, а для обучения публикуется Game конфигурация. Под каждую конфигурацию настроен свой app.config (в частности указываются разные базы - соответственно рабочая и для обучения). Если сделать построение решения, то app.config подхватывается соответственно конфигурации (Release - app.config, Game - app.Game.config). Проблема заключается в том что при публикации подхватывается только релизный app.config, как научить VS публиковать с нужным app.config
Автор: VoronOrel
Дата сообщения: 06.10.2013 19:01
Помогите написать консольную программу для расчета по вот этой формуле
Автор: mcka
Дата сообщения: 11.10.2013 14:00
Всем привет, уже третий день не могу разобраться с доп. потоком, вернее с синхронизацией. Нужна помощь, т.к. я только начал программировать на C# в VS2012.
Задача:
На форме две кнопки - "Start thread" и "Stop thread" и поле - richTextBox.
При нажатии на кнопку "Start thread" останавливается поток, если он был создан, иначе создается доп. поток в котором выводится инфа в richTextBox.
При нажатии на кнопку "Stop thread" поток должен корректно остановится, т.е. не убить поток, а в экстренном случаи должен завершить свою работу.
При закрытии приложении, если поток в работе необходимо опять же корректно остановить его.
Казалось все просто, но я столкнулся с проблемой: программа виснет.
[more="Вот мой код:"]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;

namespace WindowsFormsApplication10
{
delegate void SetTextCallback(string text);

public partial class Form1 : Form
{
Thread th;

public Form1()
{
InitializeComponent();
}

private void SetText(string text)
{
richTextBox1.AppendText(text + "\n");
}

public void SetTextSafe(string value)
{
if (richTextBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
Invoke(d, new object[] { value + " (Invoke)" });
}
else
{
// It's on the same thread, no need for Invoke
SetText(value + " (No Invoke)");
}
}
public void StopThread()
{

if (th != null)
{
th.Interrupt();

th.Join(); // Здесь зависон !!!

// если зделать, так:
//while (th.Join(10) == false) { Application.DoEvents(); }
// то казалось бы все решено, но из-за DoEvents() возникают другие проблеммы, такие как повторный вход в тот же метод StopThread()

SetTextSafe("OK...");
SetText("");
th = null;
}
}

public void StartThread()
{
StopThread();

th = new Thread(new ThreadStart(this.ThreadProcSafe));
SetTextSafe("GO...");
th.Start();
}

private void ThreadProcSafe()
{
SetTextSafe("Start...");
try
{
int i = 0;
while (i < 1000)
{
SetTextSafe(i.ToString());

i++;
Thread.Sleep(100);
}
}
catch (ThreadInterruptedException)
{
SetTextSafe("terminate");
}

SetTextSafe("stop");
}

private void Safebutton_Click(object sender, EventArgs e)
{
StartThread();
}

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

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
StopThread();
}
}
}
[/more]

Результат должен быть такой:
[more]GO... (No Invoke)
Start... (Invoke)
0 (Invoke)
1 (Invoke)
2 (Invoke)
3 (Invoke)
4 (Invoke)
terminate (Invoke)
stop (Invoke)
OK... (No Invoke)

GO... (No Invoke)
Start... (Invoke)
0 (Invoke)
1 (Invoke)
2 (Invoke)
3 (Invoke)
4 (Invoke)
terminate (Invoke)
stop (Invoke)
OK... (No Invoke)[/more]

Как я понял зависон из-за th.Join();, т.к. он блокирует вызывающий поток до завершения доп. потока. Но при этом доп. поток хочет синхронно вывести инфу в richTextBox - "terminate" и "stop", а основной поток приостановлен (блокирован).
Пытался c AutoResetEvent autoEvent вместо th.Join(); использовал autoEvent.WaitOne(), результат тот же - зависон на autoEvent.WaitOne()
Автор: mcka
Дата сообщения: 14.10.2013 11:03
Всем спасибо, подсказали: нужно заменить в SetTextSafe Invoke() на BeginInvoke() — замена текста будет происходить асинхронно, потоки не будут блокировать друг друга.
Автор: dneprcomp
Дата сообщения: 30.10.2013 02:43
Ищу пример обращения(вызова) веб сервиса из десктопного приложения на C#
Сервис уже добавлен в Service References проекта Visual Studio 2010.
При вызове из браузера сервис работает нормально.
Автор: Garrett
Дата сообщения: 30.10.2013 08:16
dneprcomp
В любой книге по С# это есть.
Автор: dneprcomp
Дата сообщения: 30.10.2013 09:10
Garrett
Ничего конкретного в интернете не нашел. В лучшем случае что-то для ASP.
Есть такая штука как eConnect для работы с MS Dynamics Great Plains.
Пытался испоьзовать для десктопа. Не полчилось. Пришлось делать веб сервис.
Мне не надо ничего передавать сервису. И получать от сервиса данные не требуется.
Надо просто вызывать периодически по таймеру.
В какой именно книге есть работа с веб сервисами из десктопа?
Автор: Mextrom
Дата сообщения: 30.10.2013 09:40
dneprcomp
Посмотрите здесь, если нужен WCF.
Автор: dneprcomp
Дата сообщения: 30.10.2013 16:06
Mextrom
Нет, пока на WCF не перешли.
Автор: Baton34V
Дата сообщения: 30.10.2013 20:54
Добрый всем.
Нужно в одной проге использовать разные версии одной dll, подключил их обе через разные альясы. Но теперь приходится писать весь код по два раза через switch, все объекты объявлять по два раза.
Подскажите плиз можно как-то такую ситуацию разрулить без reflection?
Автор: Garrett
Дата сообщения: 30.10.2013 20:59
dneprcomp
коротко - C# Programmer's Handbook
by Gregory S. MacBeth ISBN:1590592700
Apress © 2004

Programming C#, 3rd Edition
By Jesse Liberty

подробно
Beginning Microsoft® Visual C#® 2008
Karli Watson, Christian Nagel, Jacob Hammer Pedersen, Jon D. Reid, Morgan Skinner, Eric White
Автор: dneprcomp
Дата сообщения: 31.10.2013 01:01
Garrett
Просмотрел пока только Programming C#, 3rd Edition By Jesse Liberty.
Ничего не нашел. Ну все равно cпасибо.
Все-таки нашел в интернете код. Проверил, [more=код рабочий...]
Код: public void RunServiceMethod() {

BasicHttpBinding binding = new BasicHttpBinding();
binding.Name = "Service1SoapBinding";
binding.CloseTimeout = System.TimeSpan.Parse("00:01:00");

binding.OpenTimeout = System.TimeSpan.Parse("00:01:00");
binding.ReceiveTimeout = System.TimeSpan.Parse("00:10:00");
binding.SendTimeout = System.TimeSpan.Parse("00:01:00");

binding.AllowCookies = false;
binding.BypassProxyOnLocal = false;
binding.HostNameComparisonMode = System.ServiceModel.HostNameComparisonMode.StrongWildcard;

binding.MaxBufferSize = 65536;
binding.MaxBufferPoolSize = 524288;
binding.MaxReceivedMessageSize = 65536;

binding.MessageEncoding = System.ServiceModel.WSMessageEncoding.Text;
binding.TextEncoding = System.Text.Encoding.UTF8;
binding.TransferMode = System.ServiceModel.TransferMode.Buffered;

binding.UseDefaultWebProxy = true;
binding.ReaderQuotas.MaxDepth = 32;
binding.ReaderQuotas.MaxStringContentLength = 8192;

binding.ReaderQuotas.MaxArrayLength = 16384;
binding.ReaderQuotas.MaxBytesPerRead = 4096;
binding.ReaderQuotas.MaxNameTableCharCount = 16384;

binding.Security.Mode = System.ServiceModel.BasicHttpSecurityMode.None;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;

binding.Security.Transport.Realm = "";
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
binding.Security.Message.AlgorithmSuite = System.ServiceModel.Security.SecurityAlgorithmSuite.Default;


EndpointAddress endpoint = new EndpointAddress("http://MyServiceURL.com?wdsl");

Service1Client client = new Service1Client (binding, endpoint);

client.CallMethod(parameter1, Parameter2,...)

}
Автор: Garrett
Дата сообщения: 31.10.2013 08:14
dneprcomp

Цитата:
Просмотрел пока только Programming C#, 3rd Edition By Jesse Liberty.
Ничего не нашел.

А главы 15.8 и 15.9 смотрели?
Автор: BlackVetal
Дата сообщения: 31.10.2013 12:14
Baton34V
В такой ситуации как я вижу выход писать объект, который будет сам решать какую из библиотек использовать. В остальном коде уже пользоваться только этим объектом...
Автор: dneprcomp
Дата сообщения: 31.10.2013 22:41
Garrett
Глава 15 полностью посвящена Putting LINQ to Work.
Сейчас правда обратил внимание, что edition 5th. Может по этому нет.
Я пробовал искать по ключевым словам 'web' и 'service'. Ладно, уже не надо. Спасибо.
Автор: alex_gorbach
Дата сообщения: 09.11.2013 14:22
Здравствуйте. Расскажите, как красиво организовать просмотр и редактирование таблиц БД. Я думал так: таблиц - 10 штук, просматривать их в одном DataGridView, чтобы было все аккуратно.Следовательно, при смене таблицы просто меняю DataSource у грида. Есть также форма редактирование, в которой должны быть привязанные, например, к DataRow, текстбоксы и комбобоксы. Все бы ничего, просматривалось и редактировалось, если бы не одно но: при просмотре в главной форме хочу видеть в дочерних таблицах вместо кодов осмысленные поля. Создал для этих целей представления дочерних таблиц и выбираю их в качестве DataSource. Но тогда переданный в форму редактирования DataRow содержит данные представления, а не таблиц, и у меня не получается привязать каким-либо образом комбобоксы к этому DataRow из представления.
Надеюсь, описал, что мне хочется получить. Спасибо заранее.
Автор: BlackVetal
Дата сообщения: 11.11.2013 04:37
alex_gorbach
Конечно, очень сумбурно написано, но, насколько я понял вас, наверно вам нужен объект, с помощью объекта этого передавать в форму редактирования строку, а после редактирования этот объект будет решать обновить строку или создать новую.
А еще - если есть возможность, посмотрите компоненты devexpress - с помощью них вы легко решите вашу проблему.
Автор: lerdan
Дата сообщения: 14.11.2013 09:06
подскажите пожалуйста как подобраться к следующей проблеме:
необходимо написать приложение, которое интенсивно работает с 2Д графикой (визуазация и обработка информации датчиков). как можно относительно легко реализовать быструю графику для десктоп приложения на С#?
Автор: BlackVetal
Дата сообщения: 14.11.2013 10:42
lerdan
я бы наверно для начала посмотрел готовые решения - в том смысле какие есть компоненты для визуализации датчиков. Посоветовать ничего не могу - так как не решал такого рода задач, может кто из ребят посоветую что-нить, да и гугл надеюсь без ответа не оставит.
Автор: Mextrom
Дата сообщения: 15.11.2013 11:24
lerdan
Смотря что подразумевается по визуализацией датчиков. Если нужны графики, то посмотрите здесь, возможно что-то подойдёт.

А так, самый простой способ отобразить информацию с датчика - это текст
Автор: mmmm1
Дата сообщения: 15.11.2013 13:07
Требуется создать простейший COM компонент, фактически, просто dll-библиотеку, экпортирующую несколько функций, доступных через COM.
Не мог бы кто-то из знатоков разъяснить, как это сделать грамотно на C# из VS 2012? Т. е. какой выбрать тип проекта в Студии и какие флажки/настройки в нём установить?
Я нашёл такой пример:
Код: using System;
using System.Runtime.InteropServices;
namespace Example
{
public interface Greetings
{
string Greeting();
}
[ClassInterface(ClassInterfaceType.AutoDual)]
public class Sample : Greetings
{
public string Greeting()
{
return "Hello, World!";
}
}
}
Автор: Anarchia47
Дата сообщения: 30.11.2013 23:17
Нет ли у кого исходников на инженерный калькулятор?
Скиньте ссылку пожалуйста
Автор: BlackVetal
Дата сообщения: 02.12.2013 06:41
mmmm1
Сам проект создан как "Библиотека классов" - ничего особенного
я тебе как говорится из контекста покажу код библиотеки COM - надеюсь поможет (многие весщи может будет трудно понять - так как используются компоненты DevExpress)
[more]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using DevExpress.Xpo;
using XPO_OMLib;
using DevExpress.Xpo.DB;
using XPO_Personnel;
using DevExpress.Data.Filtering;
using System.ComponentModel;
using System.Collections;

namespace CIS_2010_ZUP
{

/// <summary>
/// Класс для инициализации библиотеки и получения остальных классов.
///
/// Реализует сценарии описанные в требованиях начиная от №26
/// </summary>
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
[Guid("D591F3FB-B8FE-451D-BDEB-0F5C2BBC4655")]
public partial class CIS_2010_ZUP_Class
{


/// <summary>
/// Объект с сессией, что бы каждый раз не искать.
/// </summary>
private SessionData _SessionData;

public База1С КонтекстнаяБаза1С { get; set; }

/// <summary>
/// Проверка правильной инициализации.
/// Если False, то нет подключения к базе данных.
/// </summary>
public bool IsInitInner
{
get { return _SessionData != null && КонтекстнаяБаза1С != null; }
}

/// <summary>
/// Проверка инициализации.
/// Если библиотека не инициализированна и была попытка, что то сделать, вызывается исключение.
/// </summary>
private void InitCheck()
{
if(!IsInitInner)
throw new InvalidOperationException(@"Библиотека не инициализированна");
}


#region Конструкторы и инициализация

/// <summary>
/// Конструктор.
/// </summary>
public CIS_2010_ZUP_Class()
{
}


/// <summary>
/// Инициализация сессий для объектов нашей базы.
/// </summary>
internal void InitInnerSQL(string serverPath, string DBName, string userid, string password)
{
_SessionData = SessionsLib.AddMSSQLSession(serverPath, DBName, userid, password);
}


/// <summary>
/// Инициализация сессий для объектов нашей базы.
/// </summary>
public void InitInnerSSPI(string serverPath, string DBName)
{
_SessionData = SessionsLib.AddMSSQLSession(@"cissql1\ISP", "Personnel");
}

/// <summary>
/// Инициализация сессий для объектов нашей базы.
/// </summary>
public static void InitInnerSSPI22()
{

}

/// <summary>
/// Метод получения кода базы 1С
/// </summary>
public void InitDB(string код)
{
if(_SessionData == null)
throw new InvalidOperationException(@"88888");

if(String.IsNullOrEmpty(код))
throw new InvalidOperationException(@"Не передан код БД");


База1С база1С = _SessionData.Session.FindObject<База1С>(new BinaryOperator("Код", код));

if(база1С == null)
throw new InvalidOperationException(String.Format(@"Не найдена база данных для кода '{0}'", код));

КонтекстнаяБаза1С = база1С;
}


#endregion


#region Инициализация


/// <summary>
/// Признак инициализации библиотеки.
/// </summary>
[ComVisible(true)]
[Description(@"Проверка инициализации библиотеки.")]
public bool IsInit
{
get { return IsInitInner; }
}

/// <summary>
/// Инициализация библиотеки в контексте безопасности текущего пользователя.
/// Сервер и база по умолчанию.
/// </summary>
[ComVisible(true)]
[Description(@"Инициализация библиотеки в контексте безопасности текущего пользователя. Сервер и база по умолчанию.")]
public void InitSSPI()
{
if(IsInitInner)
throw new InvalidOperationException(@"Библиотека уже инициализированна. Повторная инициализация запрещена.");

InitInnerSSPI(@"cissql1\ISP", @"Personnel");
}



/// <summary>
/// Инициализация библиотеки в контексте безопасности текущего пользователя.
/// Задаётся сервер и база.
/// </summary>
[ComVisible(true)]
[Description(@"Инициализация библиотеки в контексте безопасности текущего пользователя. Задаётся сервер и база.")]
public void InitSSPIFull(string serverPath, string DBName)
{
if(IsInitInner)
throw new InvalidOperationException(@"Библиотека уже инициализированна. Повторная инициализация запрещена.");

InitInnerSSPI(serverPath, DBName);
}


/// <summary>
/// Инициализация библиотеки с безопасностью SQL сервера.
/// Сервер и база по умолчанию.
/// </summary>
[ComVisible(true)]
[Description(@"Инициализация библиотеки с безопасностью SQL сервера. Сервер и база по умолчанию.")]
public void InitSQL(string userid, string password)
{
if(IsInitInner)
throw new InvalidOperationException(@"Библиотека уже инициализированна. Повторная инициализация запрещена.");

InitInnerSQL(@"cissql1\ISP", @"Personnel", userid, password);
}


/// <summary>
/// Инициализация библиотеки с безопасностью SQL сервера.
/// Задаётся сервер и база.
/// </summary>
[ComVisible(true)]
[Description(@"Инициализация библиотеки с безопасностью SQL сервера. Задаётся сервер и база.")]
public void InitSQLFull(string serverPath, string DBName, string userid, string password)
{
if(IsInitInner)
throw new InvalidOperationException(@"Библиотека уже инициализированна. Повторная инициализация запрещена.");

InitInnerSQL(serverPath, DBName, userid, password);
}


#endregion
}
}

[/more]
Вот так вот регистрируется библиотека по месту использования
[more]
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" CIS_2010_ZUP.dll /codebase /verbose
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" CIS_2010_ZUP.dll /codebase /verbose /tlb
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" CIS_2010_ZUP.dll /codebase /verbose /regfile
[/more]
Автор: Zabo4ka
Дата сообщения: 11.12.2013 03:51
Пишу бесхитростное приложение, которое будет автоматически заполнять web-форму. Для пробы сообразил вот такую штуку:

Код:
string siteName = "http://google.ru";
WebBrowser webBrowser1 = new WebBrowser();

webBrowser1.Navigate(siteName);
webBrowser1.Dock = System.Windows.Forms.DockStyle.Fill;
this.Controls.Add(webBrowser1); /

webBrowser1.Document.GetElementById("gbqfq").SetAttribute("value", "100"); //gbqfq это форма
webBrowser1.Document.GetElementById("gbqfsa").InvokeMember("click"); //а это кнопка

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102

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


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