var result = new Dictionary<int, List<object>>();
foreach (var item in arrComputer)
{
var c = (Comp)item;
// проверяем, есть такой год в коллекции или нет
if (!result.ContainsKey(c.year))
{
// такого года еще нет, добавляем
result.Add(c.year, new List<object> { c });
}
else
{
// год есть, добавляем запись в него
result[c.year].Add(c);
}
}
// в result будет коллекция: год-компьютеры
foreach (int year in result.Keys)
{
Console.WriteLine
(
"В {0} году на Земле вылупилось компьютеров: {1}",
year,
result[year].Count
);
if (result[year].Count > 1)
{
Console.WriteLine("Да это просто демографический взрыв какой-то!");
foreach (var item in result[year])
{
Console.WriteLine("+ {0}", ((Comp)item).marka);
}
}
}
// необходимо обязательно указать иконку
// иначе уведомление не будет отображаться
// можно использовать иконку формы
notifyIcon1.Icon = this.Icon;
// показываем уведомление
notifyIcon1.ShowBalloonTip(
10000,
"Новый ответ",
"Поступил новый ответ на ваш вопрос на Toster.ru",
ToolTipIcon.Info
);
// или с текстом по умолчанию (см. BalloonTipTitle, BalloonTipText)
// notifyIcon1.ShowBalloonTip(10000);
var f = new Form2();
f.Owner = this;
f.FormClosed += (object s, FormClosedEventArgs args) =>
{
MessageBox.Show("Форма закрыта!");
};
f.Show();
private void button1_Click(object sender, EventArgs e)
{
var f = new Form2();
f.Owner = this;
f.FormClosed += Form2_FormClosed;
f.Show();
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show("Форма закрыта!");
}
var f = new Form2();
f.Owner = this;
// главная форма будет недоступна
f.ShowDialog();
// после закрытия диалоговой формы, выполнение продолжится
MessageBox.Show("Форма закрыта!");
dataAdapter = new SqlDataAdapter("Имя процедуры", connectionString);
dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
var connection = new SqlConnection(connectionString);
// connection.Open();
var cmd = new SqlCommand("Имя процедуры", connection);
cmd.CommandType = CommandType.StoredProcedure;
dataAdapter = new SqlDataAdapter(cmd);
string filePath = "123.jpg";
using (var file = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Inheritable))
{
pictureBox1.Image = Image.FromStream(file);
}
File.Delete(filePath);
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.Runtime.InteropServices;
namespace WindowsFormsApplication9
{
public partial class Form1 : Form
{
/// <summary>
/// Получает текущее положение ползунка полосы прокрутки.
/// </summary>
/// <param name="hWnd">Дескриптор.</param>
/// <param name="nBar">Тип.</param>
/// <returns></returns>
[DllImport("User32.dll")]
public extern static int GetScrollPos(IntPtr hWnd, int nBar);
/// <summary>
/// Функция для отправки сообщений.
/// </summary>
/// <param name="hWnd">Дескриптор.</param>
/// <param name="msg">Само сообщение.</param>
/// <param name="wParam">Параметры.</param>
/// <param name="lParam">Дополнительные параметры.</param>
[DllImport("User32.dll")]
public extern static int SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
public enum ScrollBarType : uint
{
SbHorz = 0,
SbVert = 1,
SbCtl = 2,
SbBoth = 3
}
public enum Message : uint
{
/// <summary>
/// Сообщение для вертикальной полосы прокрутки
/// </summary>
WM_VSCROLL = 0x0115
}
public enum ScrollBarCommands : uint
{
/// <summary>
/// Положение ползунка полосы прокрутки в конце операции
/// </summary>
SB_THUMBPOSITION = 4
}
private RichTextBox rich1 = new RichTextBox();
private RichTextBox rich2 = new RichTextBox();
public Form1()
{
InitializeComponent();
// тестовый текст
string text = "";
for (int i = 0; i < 99; i++)
{
text += "Имеется 2 richTextBox, нужно установить значение текущего вертикального скролла первого, как у в данный момент у второго. Пробовал всякие offset, копался в гугле, но ничего внятного не нашел.\r\n";
}
// добавляем поля на форму
rich1.Name = "rich1";
rich1.Dock = DockStyle.Top;
rich1.Text = text;
rich1.VScroll += rich_VScroll;
this.Controls.Add(rich1);
rich2.Name = "rich2";
rich2.Dock = DockStyle.Top;
rich2.Text = text;
rich2.VScroll += rich_VScroll;
this.Controls.Add(rich2);
}
/// <summary>
/// Обработчик изменения положения ползунка полосы прокрутки.
/// </summary>
private void rich_VScroll(object sender, EventArgs e)
{
// кто вызвал событие
RichTextBox currentRich = (RichTextBox)sender;
// если событие вызвал rich2, то второй будет rich1 и наоборот
RichTextBox otherRich = currentRich.Name.Equals("rich1") ? rich2 : rich1;
// получаем позицию ползунка полосы прокрутки текущего поля
int pos = GetScrollPos(currentRich.Handle, (int)ScrollBarType.SbVert);
pos <<= 16;
// чтобы не застрять в бесконечности
// (можно так не делать и прикрутить обработчик только к одному полю)
otherRich.VScroll -= rich_VScroll;
// --
// передаем позицию во второе поле
uint par = (uint)ScrollBarCommands.SB_THUMBPOSITION | (uint)pos;
SendMessage(otherRich.Handle, (int)Message.WM_VSCROLL, new IntPtr(par), new IntPtr(0));
otherRich.VScroll += rich_VScroll;
}
}
}
int i = 0;
bool b = false;
while (i < 10)
{
Console.WriteLine("Текущее: {0}", i);
if (i == 5 && !b)
{
b = true;
continue;
}
i++;
}
int i = 0;
bool b = false;
while (i < 10)
{
again: // точка возврата
Console.WriteLine("Текущее: {0}", i);
if (i == 5 && !b)
{
b = true;
goto again;
}
i++;
}
// пауза между попытками (100 мс)
var interval = new TimeSpan(0, 0, 0, 0, 100);
// максимальное время ожидания (1 секунда)
var timeout = new TimeSpan(0, 0, 0, 1);
while (true)
{
var totalTime = new TimeSpan(); // счетчик времени
var заданиеВыполнено = false;
while(!заданиеВыполнено) // повторять, пока задание не будет выполнено
{
try
{
// тут код задания
// если ошибок не будет, то
заданиеВыполнено = true; // работа цикла будет завершена
}
catch
{
// если ошибка, делаем паузу
System.Threading.Thread.Sleep(100);
// увеличиваем счетчик времени
totalTime += interval;
if (totalTime > timeout)
{
// превышен таймаут, выходим
Console.WriteLine("Превышено время ожидания");
break;
}
}
}
}
public partial class Form1 : Form
{
private int BrushType = 1;
public Form1()
{
InitializeComponent();
// создаем PictureBox
var pic = new PictureBox { Dock = DockStyle.Fill, BackColor = Color.White };
pic.MouseClick += PictureBox_MouseClick;
this.Controls.Add(pic);
// создаем панель для кнопок
var panel = new FlowLayoutPanel { Dock = DockStyle.Top, AutoSize = true };
this.Controls.Add(panel);
// кнопки
var btn = new RadioButton
{
Text = "Круг",
Tag = 1,
Appearance = Appearance.Button,
Checked = true,
AutoSize = true
};
btn.Click += Button_Click;
panel.Controls.Add(btn);
btn = new RadioButton
{
Text = "Не круг",
Tag = 2,
Appearance = Appearance.Button,
AutoSize = true
};
btn.Click += Button_Click;
panel.Controls.Add(btn);
btn = new RadioButton
{
Text = "Квадратный круг",
Tag = 3,
Appearance = Appearance.Button,
AutoSize = true
};
btn.Click += Button_Click;
panel.Controls.Add(btn);
}
private void Button_Click(object sender, EventArgs e)
{
var btn = (RadioButton)sender;
this.BrushType = (int)btn.Tag;
}
private void PictureBox_MouseClick(object sender, MouseEventArgs e)
{
// получаем ссылку на PictureBox
var pic = (PictureBox)sender;
// получаем Graphics из PictureBox
var g = pic.CreateGraphics();
if (this.BrushType == 2)
{
// рисуем не круглый квадрат
g.DrawRectangle(Pens.Black, e.X, e.Y, 50, 50);
}
else if (this.BrushType == 3)
{
// рисуем квадратный круг
Point[] points = new Point[6];
int half = 50 / 2;
int quart = 50 / 4;
points[0] = new Point(e.X + quart, e.Y);
points[1] = new Point(e.X + 50 - quart, e.Y);
points[2] = new Point(e.X + 50, e.Y + half);
points[3] = new Point(e.X + 50 - quart, e.Y + 50);
points[4] = new Point(e.X + quart, e.Y + 50);
points[5] = new Point(e.X, e.Y + half);
g.DrawPolygon(Pens.Black, points);
}
else
{
// рисуем эллипс
g.DrawEllipse(Pens.Black, e.X, e.Y, 50, 50);
}
}
}
var pic = (PictureBox)sender;
if (pic.Image == null) { pic.Image = new Bitmap(pic.Width, pic.Height); }
var bmp = new Bitmap(pic.Image);
var g = Graphics.FromImage(bmp);
pic.Image = bmp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace ConsoleApplication13
{
class Program
{
[DllImportAttribute("User32.dll")]
private static extern int FindWindow(String ClassName, String WindowName);
[DllImportAttribute("User32.dll")]
private static extern IntPtr SetForegroundWindow(int hWnd);
static void Main(string[] args)
{
int hWnd = FindWindow(null, "Калькулятор");
Console.WriteLine(hWnd);
if (hWnd > 0)
{
Console.WriteLine("К счастью, окно найдено...");
SetForegroundWindow(hWnd);
}
else
{
Console.WriteLine("Окно не найдено!");
}
Console.ReadKey();
}
}
}
static void Main(string[] args)
{
foreach (var p in Process.GetProcessesByName("calc"))
{
SetForegroundWindow(p.MainWindowHandle.ToInt32());
}
Console.ReadKey();
}
string value = textBox1.Text;
// меняем разделитель на текущий
value = System.Text.RegularExpressions.Regex.Replace(value, @",|\.", System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator);
// преобразуем строку в число
var result = double.Parse(value);
<script>
alert("Hello, world!");
</script>