tar -xf Python-3.9.5.tgz
man
man tar
и прочитать полную справку по утилите. Settings.settings
в Properties
:Settings.settings
using yourNameSpace.Properties;
string name = Settings.Default["name"].ToString();
Settings.Default["name"] = name;
, затем Settings.Default.Save();
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt update
sudo apt install -y boot-repair && boot-repair
sudo dpkg --add-architecture i386
wget -O - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -
sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main'
sudo apt update
sudo apt install --install-recommends winehq-stable
sudo apt install wine winetricks
sudo apt install wine32
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe C:\Users\user\Documents\Projects\proj\main.cs
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe C:\Users\user\Documents\Projects\proj\*.cs
*.cs
, где *
- все файлы с расширением .cs
cd <your_path>
, и выглядело бы это все примерно так:cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
csc.exe C:\Users\user\Documents\Projects\proj\*.cs
cd ./path
ls ./path
cp ./path ./path
mv ./path ./path
mkdir <dir_name>
> filename.anyext
namespace TryEnum
{
enum DownloadType
{
Video, Audio, Custom, Unknown, Default
}
enum ForceIpProtocol
{
IPv4, IPv6
}
enum ProxyProtocol
{
HTTPS, HTTP, SOCKS4, SOCKS5
}
}
class ClassName : IClassName
, но это не совсем наследование, там немножко другая реализация). И интерфейс нужен в том случае, если нужно реализовать полиморфизм в коде и/или что бы упростить доступ к публичным полям в классах, которые реализуют этот интерфейс. static void Create()
{
// empty...
}
class SimpleHuman : IHuman
{
public string Name { get; set; }
public int Age { get; set; }
public SimpleHuman()
{
Name = "Generic human...";
Age = 20;
}
public SimpleHuman(string name) : this()
{
Name = name;
}
public SimpleHuman(string name, int age) : this()
{
Name = name;
Age = age;
}
}
class CoolHuman : IHuman
{
public string Name { get; set; }
public int Age { get; set; }
public CoolHuman()
{
Name = "BOB!";
Age = 20;
}
public CoolHuman(string name) : this()
{
Name = name;
}
public CoolHuman(string name, int age) : this()
{
Name = name;
Age = age;
}
}
interface IHuman
{
string Name { get; set; }
int Age { get; set; }
}
class Create
{
public IHuman Human { get; set; }
public Create()
{
Human = new CoolHuman();
}
public void Hello()
{
Console.WriteLine("Hello, {0}. Today you are {1} years old", Human.Name, Human.Age);
}
}
dataGridView1.Columns[0].HeaderText = "№";
dataGridView1.Columns[0].MinimumWidth = 25;
dataGridView1.Columns[0].Width = 40;
dataGridView1.Columns[0].Visible = true;
dataGridView1.Columns[1].HeaderText = "Спрятанная колонка";
dataGridView1.Columns[1].Visible = false;
int[] array = new[] { 1, 2, 3, 4, 5 };
int temp;
for (int i = 0; i < array.Length-1; i++)
{
for (int j = i + 1; j < array.Length; j++)
{
if (array[i] > array[j])
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
using yourNamespace.Properties;
, что бы можно было использовать Settings.Default
и заведем там свойство:public static int Count
{
get
{
return (int)(Settings.Default["count"]);
}
set
{
Settings.Default["count"] = value;
Settings.Default.Save();
}
}
YourStaticClass.Count = ++YourStaticClass.Count;
dataGridView1.DataSource = dataSet.Tables[0];
dataSet.Tables[0].Rows.Add();
dataSet.Tables[0].Rows[dataSet.Tables[0].Rows.Count - 1][int номер ячейки, куда добавить string] = receivedData;
dataSet.Tables
индексируются как .Rows[int индекс строки][int индекс столбца/ячейки (Cells)]
, и для того, что бы узнать, какая наша строка добавилась (а добавилась она в конец), мы, узнав количество Rows.Count
строк, вычитаем из Count
1, т.к. индексирование в списках, массивах и т.д. начинается с 0, а в Count
не может быть 0, если есть хоть одна строка, то Count
уже будет равен 1.dataGridView1.Update();
DataSet dataSet = new DataSet();
string filePath = Application.StartupPath + "\\dataset.xml";
private void Form1_Shown(object sender, EventArgs e)
{
// Проверяем наличие файла, если на месте, то загружаем из него наш dataSet
if (File.Exists(filePath))
{
dataSet.ReadXml(filePath);
}
// Если отсутствует, создадим файл с простой структурой для 1 строки
else
{
using (XmlWriter writer = XmlWriter.Create("dataset.xml"))
{
writer.WriteStartElement("Data");
writer.WriteStartElement("rows");
writer.WriteElementString("Type", "");
writer.WriteElementString("Category", "");
writer.WriteElementString("Date", "" + DateTime.Now.ToString("dd.mm.yyy") + "");
writer.WriteElementString("Summ", "0");
writer.WriteElementString("Total", "0");
writer.WriteElementString("Comment", "");
writer.WriteEndElement();
writer.WriteEndElement();
writer.Flush();
}
}
// Заполняем датагрид
DataGridFill(dataSet);
//Подписываемся на событие добавление новой строки
dataGridView1.RowsAdded += new DataGridViewRowsAddedEventHandler(RowsAdded);
}
<?xml version="1.0" standalone="yes"?>
<Data>
<rows>
<Type />
<Category />
<Date>06.03.2020</Date>
<Summ>0</Summ>
<Total>0</Total>
<Comment />
</rows>
</Data>
private void Add_button_Click(object sender, EventArgs e)
{
string empty = "";
string date = DateTime.Now.ToString("dd.mm.yyyy");
if (dataGridView1.Columns.Count != 0)
{
dataSet.Tables[0].Rows.Add(new object[] { empty, empty, date, empty, empty, empty });
dataGridView1.Update();
}
else
MessageBox.Show("Ошибка: Невозможно добавить строку в таблицу, в которой отсутствуют колонки",
"Ошибка",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
dataGridView1.RowsAdded += new DataGridViewRowsAddedEventHandler(RowsAdded);
private void DataGridFill(DataSet dataSet)
{
if (dataSet != null)
{
dataGridView1.DataSource = dataSet.Tables[0];
for(int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
{
if (string.IsNullOrEmpty(dataSet.Tables[0].Rows[i][4].ToString()))
ataSet.Tables[0].Rows[i][4] = 0;
}
for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
{
if (i != 0 && !string.IsNullOrEmpty(dataSet.Tables[0].Rows[i][3].ToString()))
dataSet.Tables[0].Rows[i][4] = Convert.ToDouble(dataSet.Tables[0].Rows[i - 1][4]) + Convert.ToDouble(dataSet.Tables[0].Rows[i][3]);
else if (!string.IsNullOrEmpty(dataSet.Tables[0].Rows[i][3].ToString()))
dataSet.Tables[0].Rows[i][4] = dataSet.Tables[0].Rows[i][3];
}
}
dataGridView1.Columns[0].HeaderText = "Тип";
dataGridView1.Columns[1].HeaderText = "Категория";
dataGridView1.Columns[2].HeaderText = "Дата";
dataGridView1.Columns[3].HeaderText = "Сумма";
dataGridView1.Columns[4].HeaderText = "Итого";
dataGridView1.Columns[5].HeaderText = "Комментарий";
}