this.Hide();
public partial class Form1 : Form
{
int m = 0;
int s = 0;
int ms = 0;
public Form1()
{
InitializeComponent();
// интервал - с какой частотой будет обновляться таймер (п.с. 2 раза в секунду = 500 миллисекунд
timer1.Interval = 500;
// называем кнопки
button1.Text = "Пуск";
button2.Text = "Пауза";
button3.Text = "Сброс";
// присваиваем label'ам "текст"
label1.Text = "0"; // минуты
label2.Text = "00"; // секунды
label3.Text = "000"; // миллисекунды
button2.Enabled = false; // кнопку "приостановить" - "замораживаем"
button3.Enabled = false; // кнопку "сброс" - "замораживаем"
}
private void button1_Click(object sender, EventArgs e)
{
// если таймер включен
if (timer1.Enabled)
{
timer1.Enabled = false; // останавливаем таймер
button1.Text = "Пуск"; // переименовываем кнопку
button2.Enabled = false; // кнопку "приостановить" - "замораживаем" - т.е. делаем неактивной
}
else //если таймер выключен, тогда его запускаем
{
// обнуляем значения (понадобится после второго и последующего запуска)
m = 0;
s = 0;
ms = 0;
timer1.Enabled = true; // запускаем таймер
button1.Text = "Стоп"; // переименовываем кнопку
button2.Enabled = true; // кнопку "приостановить" - "размораживаем" - позволяем делать её кликабельной
}
}
private void timer1_Tick(object sender, EventArgs e) // то, что делает таймер, когда она запущен
{
if (s < 60) // если секунды меньше 60
{
s++; // увеличиваем секунды
label2.Text = s.ToString(); // записываем в лабел2 где секунды (предварительно int переделав в string)
// п.с. компилятор справа налево "читает"
}
else // если секунды равны 60 или более, то
{
m++; //увеличиваем минуты
label1.Text = m.ToString(); // записываем в лабел для минут
}
label3.Text = DateTime.Now.Millisecond.ToString(); // записываем в лабел3 для миллисекунд текущие миллисекунд по времени
}
private void button2_Click(object sender, EventArgs e)
{
if (timer1.Enabled) { timer1.Stop(); button2.Text = "Продолжить"; button3.Enabled = true; }
else { timer1.Start(); button2.Text = "Пауза"; button3.Enabled = false; }
}
private void button3_Click(object sender, EventArgs e) //кнопка "сброс" времени
{
timer1.Enabled = false;
// присваиваем первоначальные значения
button1.Text = "Пуск";
// обнуляем значения
m = 0;
s = 0;
ms = 0;
label1.Text = "0";
label2.Text = "00";
label3.Text = "000";
button2.Enabled = false; // кнопку "приостановить" - "замораживаем"
button3.Enabled = false; // тоже самое с кнопкой "сброс"
}
}
Private недопустим для данного элемента
private
преждевременно, да и (как я увидел и понял, что в книге должно было быть) -он никакой роли тут вообще не играетИ что за странный способ выводить цифры через label, а не masked textbox?
public async Task Blabla()
{
await Task.Run(()=>{
//тут я что-то выполняю
});
}
public async Task<string> Blabla()
{
return await Task.Run(()=>{
return "я возвращаюсь!!!";
});
}
Правильное ли мое утверждение в этом коде, что a,b - ref по дефолту в CLR ?
Ключевое слово ref используется для передачи аргумента по ссылке, а не по значению.(источник)
Эффект передачи по ссылке в том, что все изменения вызываемого метода отражаются на значении переменной аргумента, используемой в вызове метода. Например если вызывающий объект передает выражение локальной переменной или выражение доступа к элементу массива и вызванный метод заменяет объект, на который ссылается параметр ref, то локальная переменная или элемент массива взывающего объекта теперь ссылаться на новый объект.
static void Add
значение, а не ссылку на это значение. ref
- то переменная будет менять своё значение (если к ней что-то добавите/отнимите и т.д.). int a = 1;
a = a*5+9; // a=14;
ref
- то, "значение" будет меняться по ссылкеstatic void Method(ref int i)
{
i = i + 30;
}
static void Main()
{
int val = 1;
Method(ref val);
Console.WriteLine(val);
// Output: 31
}
Dictionary<string, string[]> wordDictionary = new Dictionary<string, string[]>();
wordDictionary.Add("YANDEX", new string[] {'yandex1','yandex2'});
wordDictionary.Add("GOOGLE", new string[] {'google1','google2'});
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
List<UserInfo> my_list = new List<UserInfo>();
my_list.Add(new UserInfo { name = "Вася", age = 19, male = true});
my_list.Add(new UserInfo { name = "Маша", age = 23, male = false});
Dictionary<string, UserInfo> dic = new Dictionary<string, UserInfo>();
dic.Add("YAndeX", my_list[0]);
dic.Add("GooGle", my_list[1]);
foreach (var temp in dic)
{
Console.WriteLine("Key: " + temp.Key + " Value: Age" + temp.Value.age + " Name: " + temp.Value.name + " is male: " + temp.Value.male);
}
Console.ReadLine();
}
}
class UserInfo
{
public string name { get; set; }
public int age { get; set; }
public bool male { get; set; }
}
}
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
class UserInfo
{
// Метод, реализующий словарь
public static Dictionary<int, string> MyDic(int i)
{
Dictionary<int, string> dic = new Dictionary<int,string>();
Console.WriteLine("Введите имя сотрудника: \n");
string s;
for (int j = 0; j < i; j++)
{
Console.Write("Name{0} --> ",j);
s = Console.ReadLine();
dic.Add(j, s);
Console.Clear();
}
return dic;
}
}
class Program
{
static void Main()
{
Console.Write("Сколько сотрудников добавить? ");
try
{
int i = int.Parse(Console.ReadLine());
Dictionary<int, string> dic = UserInfo.MyDic(i);
// Получить коллекцию ключей
ICollection<int> keys = dic.Keys;
Console.WriteLine("База данных содержит: ");
foreach (int j in keys)
Console.WriteLine("ID -> {0} Name -> {1}",j,dic[j]);
}
catch (FormatException)
{
Console.WriteLine("Неверный ввод");
}
Console.ReadLine();
}
}
}
public Form1()
{
InitializeComponent();
webbrowser.BringToFront();
webbrowser.Visible = true;
string url = "https://oauth.vk.com/authorize?client_id=" + VK_main.ID_APP + "&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=" + VK_main.SCOPE + "&response_type=token&v=" + VK_main.VERSION;
webbrowser.LoadingFrameComplete += Webbrowser_LoadingFrameComplete; //жду окончания загрузки
webbrowser.Source = new Uri(url);
}
private void Webbrowser_LoadingFrameComplete(object sender, FrameEventArgs e)
{
if (!e.IsMainFrame) return;
if(e.Url.ToString().Contains("https://oauth.vk.com/blank.html#access_token="))
{
int start = e.Url.Fragment.IndexOf("=");
int end = e.Url.Fragment.IndexOf("&");
VK_main.TOKEN = e.Url.Fragment.Substring(start+1, end-start-1); // записываю в "глобальную переменную токен
webbrowser.LoadingFrameComplete -= Webbrowser_LoadingFrameComplete;
webbrowser.Visible = false;
}
}
Не понимаю, как в одну переменную записывается 2 разных значения
People humanoid_1 = new People("Name1"); // humanoid_1 -> переменная раз
People humanoid_2 = new People("Name2"); // humanoid_2 -> переменная дваз
People
. People
. А ссылочные типы хранятся в куче. А при создании объекта ссылочного типа People humanoid_1 = new People("Name1");
в стеке помещается ссылка на адрес в куче.// сам post
public async Task<string> POST(string url, NameValueCollection nvc = null)
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = WebRequestMethods.Http.Post;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0";
request.AllowAutoRedirect = true;
request.ProtocolVersion = HttpVersion.Version11;
request.AllowWriteStreamBuffering = true;
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
request.ContentType = "multipart/form-data; boundary=" + boundary;
request.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
request.Headers.Add("Accept-Encoding", "gzip, deflate");
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
if (nvc != null)
{
Stream rs = request.GetRequestStream();
byte[] boundarybytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
string _key = String.Empty;
foreach (string key in nvc.Keys)
{
rs.Write(boundarybytes, 0, boundarybytes.Length);
string formitem = string.Format(formdataTemplate, key, nvc[key]);
byte[] formitembytes = Encoding.UTF8.GetBytes(formitem);
rs.Write(formitembytes, 0, formitembytes.Length);
}
rs.Write(boundarybytes, 0, boundarybytes.Length);
}
return await Task.Run(() =>
{
string resp = RESPONSE(request);
return resp;
});
}
catch (Exception ex)
{
return ex.Message;
}
}
// post обращается к ответу
public string RESPONSE(HttpWebRequest request)
{
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string answer = "";
var headers = response.Headers.ToString();
if (Convert.ToInt32(response.StatusCode) == 302 || Convert.ToInt32(response.StatusCode) == 200)
{
using (Stream rspStm = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(rspStm, Encoding.UTF8, true))
{
answer = String.Empty; answer = reader.ReadToEnd();
}
}
return answer;
}
else
{
response.Close(); return WebUtility.HtmlDecode(response.StatusDescription);
}
}
catch (Exception ex)
{
return WebUtility.HtmlDecode(ex.Message);
}
}
//после этого сам код: (на примере wall.get)
public async System.Threading.Tasks.Task<bool> GetWall(int id_group, int offset = 0)
{
try
{
string url = "https://api.vk.com/method/wall.get?";
Main_Tools mt = new Main_Tools();
// вот что вам надо: создать коллекцию и передать в post (и добавлять/заполнять через for || foreach для вашего случая
NameValueCollection nvc = new NameValueCollection();
nvc.Add("access_token", VK_main.TOKEN);
nvc.Add("owner_id", id_group.ToString());
nvc.Add("count", "1");
if(offset != 0) nvc.Add("offset", offset.ToString());
nvc.Add("filter", "owner");
nvc.Add("v", VK_main.VERSION);
// добавляете сколько вам нужно параметров и передаёте в метод POST вторым аргументом
string t = await mt.POST(url, nvc);
dynamic d = JObject.Parse(t);
// и далее разбираете json
//.. и т.д.
тип dynamic существует только во время компиляции, но не во время выполнения
зачем тип счетчика вообще указывать как dynamic
насколько это сложно, насколько целесообразно ?
private void button1_Click(object sender, EventArgs e)
{
// тут какой-то код
}
private void label_Click(object sender, EventArgs e)
{
Label lb = sender as Label;
lb.Content = "какой-то текст";
// или
int x;
switch((sender as Label).Name)
{
case "label": x = 0; break;
case "label2": x = 1; break;
case "label3": x = 2; break;
default: x = -1; break;
}
}
Bitmap printscreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics graphics = Graphics.FromImage(printscreen as Image);
graphics.CopyFromScreen(0, 0, 0, 0, printscreen.Size);
var ms = new MemoryStream();
printscreen.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
string convertedImg = Convert.ToBase64String(ms.ToArray(), Base64FormattingOptions.None);
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAMABVYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRV... и т.д.
<img alt="" src="data:image/png;base64,ТУТ_ПРОБЕЛА_У_ВАС CONVERTED_BASE64"/>
между base64, и CONVERTED_BASE64)Какие требования для разработки приложений под Windows XP и выше?
string my_text = "Hello";
string nickname = "ogpol32!";
Console.WriteLine(string.Format($"({my_text}, {nickname})"));
И есть ли существенная разница?
Как вы относитесь к Telerik?