Пробую изучать C# нужна подсказка или помощ
Цитата: Aleksey от 01.05.2023, 14:13Всем привет,
Выкладываю программу mailsender (отправляет письма на указанный ящик в программе+ можно прикреплять несколько файлов с помощью Drag and Drop)
[spoiler title="Код"]
using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Text; using System.IO; using System.Linq; using System.Net; using System.Net.Mail; using System.Runtime.InteropServices; using System.Threading.Tasks; using System.Windows.Forms; namespace TestProject { public partial class Form1 : Form { public Form1() { InitializeComponent(); KeyPreview = true; KeyDown += (a, e) => { if (e.KeyValue == (char)Keys.Enter) { button1_Click(button1, null); } }; PrivateFontCollection myfont = new PrivateFontCollection(); using (MemoryStream fontStream = new MemoryStream(Properties.Resources.MyFont)) { var data = Marshal.AllocCoTaskMem((int)fontStream.Length); byte[] fontdata = new byte[fontStream.Length]; fontStream.Read(fontdata, 0, (int)fontStream.Length); Marshal.Copy(fontdata, 0, data, (int)fontStream.Length); myfont.AddMemoryFont(data, (int)fontStream.Length); Marshal.FreeCoTaskMem(data); } Font = new Font(myfont.Families[0], 12); Controls.OfType<Control>().Where(x => x.GetType().GetProperty("UseCompatibleTextRendering") != null) .ToList().ForEach(x => x.GetType().GetProperty("UseCompatibleTextRendering").SetValue(x, true)); } void button1_Click(object sender, EventArgs e) { string fromUser = richTextBox1.Text; // Тут пишем комментарий пользователя string uemail = textBox1.Text; // Получим Email пользователя string upassword = textBox2.Text; try { MailAddress from = new MailAddress(uemail); MailAddress to = new MailAddress("/*СЮДА ПИШЕМ АДРЕС НА КОТОРЫЙ БУДЕТ ОТПРАВЛЕНО ПИСЬМО*/ gmail.com"); MailMessage message = new MailMessage(from, to) { Subject = "Заголовок письма", Body = $"{Environment.NewLine}{fromUser}" }; SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587) { Credentials = new NetworkCredential(uemail, upassword), EnableSsl = true }; foreach (string item in label2.Text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries)) { Attachment attachment = new Attachment(item); message.Attachments.Add(attachment); } smtp.Send(message); // Отправляем наше письмо MessageBox.Show("Сообщение успешно отправлено. Спасибо!"); Close(); } catch (FormatException) { MessageBox.Show("Неверный формат электронной почты. Почта должна иметь окончания - @gmail/yandex/mail/bk/list и другие"); textBox1.Clear(); } catch (ArgumentException ae) { MessageBox.Show("Строка с адресом не должна быть пуста \n" + ae); } catch (Exception ex) { MessageBox.Show(ex.HelpLink); } } void textBox1_Click(object sender, EventArgs e) { textBox1.Text = ""; } void textBox2_Click(object sender, EventArgs e) { textBox2.Text = ""; } void panel1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { label1.Text = "Отпустите мышь"; e.Effect = DragDropEffects.Copy; } } void panel1_DragLeave(object sender, EventArgs e) { label1.Text = "Перетащите файлы сюда"; } void panel1_DragDrop(object sender, DragEventArgs e) { label1.Text = ""; List<string> paths = new List<string>(); foreach (string obj in (string[])e.Data.GetData(DataFormats.FileDrop)) if (Directory.Exists(obj)) paths.AddRange(Directory.GetFiles(obj, "*.*", SearchOption.AllDirectories)); else paths.Add(obj); label2.Text = string.Join("\r\n", paths); } async void panel1_Paint(object sender, PaintEventArgs e) { await Task.Run(async () => { Pen pen = new Pen(Color.Black, 2); for (int i = 30; i > 2; i--, await Task.Delay(30)) { panel1.CreateGraphics().Clear(SystemColors.Control); pen.DashPattern = new float[] { 2, i }; panel1.CreateGraphics().DrawRectangle(pen, 1, 1, panel1.Width - 2, panel1.Height - 2); } }); } } }
[/spoiler]
Скрин и исходники
P.S.
Всем кто помогал и приложил 👐 большое спасибо.
Всем привет,
Выкладываю программу mailsender (отправляет письма на указанный ящик в программе+ можно прикреплять несколько файлов с помощью Drag and Drop)
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Text;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TestProject
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
KeyPreview = true;
KeyDown += (a, e) => { if (e.KeyValue == (char)Keys.Enter) { button1_Click(button1, null); } };
PrivateFontCollection myfont = new PrivateFontCollection();
using (MemoryStream fontStream = new MemoryStream(Properties.Resources.MyFont))
{
var data = Marshal.AllocCoTaskMem((int)fontStream.Length);
byte[] fontdata = new byte[fontStream.Length];
fontStream.Read(fontdata, 0, (int)fontStream.Length);
Marshal.Copy(fontdata, 0, data, (int)fontStream.Length);
myfont.AddMemoryFont(data, (int)fontStream.Length);
Marshal.FreeCoTaskMem(data);
}
Font = new Font(myfont.Families[0], 12);
Controls.OfType<Control>().Where(x => x.GetType().GetProperty("UseCompatibleTextRendering") != null)
.ToList().ForEach(x => x.GetType().GetProperty("UseCompatibleTextRendering").SetValue(x, true));
}
void button1_Click(object sender, EventArgs e)
{
string fromUser = richTextBox1.Text; // Тут пишем комментарий пользователя
string uemail = textBox1.Text; // Получим Email пользователя
string upassword = textBox2.Text;
try
{
MailAddress from = new MailAddress(uemail);
MailAddress to = new MailAddress("/*СЮДА ПИШЕМ АДРЕС НА КОТОРЫЙ БУДЕТ ОТПРАВЛЕНО ПИСЬМО*/ gmail.com");
MailMessage message = new MailMessage(from, to)
{
Subject = "Заголовок письма",
Body = $"{Environment.NewLine}{fromUser}"
};
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential(uemail, upassword),
EnableSsl = true
};
foreach (string item in label2.Text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries))
{
Attachment attachment = new Attachment(item);
message.Attachments.Add(attachment);
}
smtp.Send(message); // Отправляем наше письмо
MessageBox.Show("Сообщение успешно отправлено. Спасибо!");
Close();
}
catch (FormatException)
{
MessageBox.Show("Неверный формат электронной почты. Почта должна иметь окончания - @gmail/yandex/mail/bk/list и другие");
textBox1.Clear();
}
catch (ArgumentException ae)
{
MessageBox.Show("Строка с адресом не должна быть пуста \n" + ae);
}
catch (Exception ex)
{
MessageBox.Show(ex.HelpLink);
}
}
void textBox1_Click(object sender, EventArgs e)
{
textBox1.Text = "";
}
void textBox2_Click(object sender, EventArgs e)
{
textBox2.Text = "";
}
void panel1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
label1.Text = "Отпустите мышь";
e.Effect = DragDropEffects.Copy;
}
}
void panel1_DragLeave(object sender, EventArgs e)
{
label1.Text = "Перетащите файлы сюда";
}
void panel1_DragDrop(object sender, DragEventArgs e)
{
label1.Text = "";
List<string> paths = new List<string>();
foreach (string obj in (string[])e.Data.GetData(DataFormats.FileDrop))
if (Directory.Exists(obj))
paths.AddRange(Directory.GetFiles(obj, "*.*", SearchOption.AllDirectories));
else
paths.Add(obj);
label2.Text = string.Join("\r\n", paths);
}
async void panel1_Paint(object sender, PaintEventArgs e)
{
await Task.Run(async () =>
{
Pen pen = new Pen(Color.Black, 2);
for (int i = 30; i > 2; i--, await Task.Delay(30))
{
panel1.CreateGraphics().Clear(SystemColors.Control);
pen.DashPattern = new float[] { 2, i };
panel1.CreateGraphics().DrawRectangle(pen, 1, 1, panel1.Width - 2, panel1.Height - 2);
}
});
}
}
}
Скрин и исходники
P.S.
Всем кто помогал и приложил 👐 большое спасибо.
Цитата: Aleksey от 23.08.2023, 20:22Всем привет,
Давненько не пилил ни чего, то комп навернулся, пока нашёл, да пока руки дошли🙄
Вопрос такой у меня, как в textBox1 выделить конкретное слово?
Например:
Есть textBox1 и в нём есть много текста, из этого всего текста нужно выделить одно слово.
Нужно выделить из рандомного текста, именно нужное слово, которое я хочу.[spoiler title=""]
Как выделять, от заданной точки до конца или до куда укажем, я знаю.
// задаём начальную точку (с какого символа выделять)
textBox1.SelectionStart = 3;
// задаём конечную точку (до какого символа выделять)
textBox1.SelectionLength = textBox1.Text.Length; // в данном случае до конца текстаЧто ещё приходит в голову:
Можно попробовать задать вопрос.if (textBox1.Text.Contains("пожалуйста,"))
{
textBox1.Selection // и дальше не знаю.😨
}
[/spoiler]
Всем привет,
Давненько не пилил ни чего, то комп навернулся, пока нашёл, да пока руки дошли🙄
Вопрос такой у меня, как в textBox1 выделить конкретное слово?
Например:
Есть textBox1 и в нём есть много текста, из этого всего текста нужно выделить одно слово.
Нужно выделить из рандомного текста, именно нужное слово, которое я хочу.
Как выделять, от заданной точки до конца или до куда укажем, я знаю.
// задаём начальную точку (с какого символа выделять)
textBox1.SelectionStart = 3;
// задаём конечную точку (до какого символа выделять)
textBox1.SelectionLength = textBox1.Text.Length; // в данном случае до конца текста
Что ещё приходит в голову:
Можно попробовать задать вопрос.
if (textBox1.Text.Contains("пожалуйста,"))
{
textBox1.Selection // и дальше не знаю.😨
}
Цитата: yuri от 24.08.2023, 03:41Aleksey, привет, как насчет этого?
[spoiler title="Код"]
TextBox textBox = new TextBox() { Text = "Meow, this is a sample", Size = new Size(200, 30), Location = new Point(5, 5) }; Controls.Add(textBox); string word = "Meow"; // регистр не имеет значения int startIndex = textBox.Text.ToLower().IndexOf(word.ToLower()); if (startIndex >= 0) { textBox.SelectionStart = startIndex; textBox.SelectionLength = word.Length; } else textBox.SelectionStart = 0;[/spoiler]
Aleksey, привет, как насчет этого?
TextBox textBox = new TextBox() {
Text = "Meow, this is a sample",
Size = new Size(200, 30),
Location = new Point(5, 5)
};
Controls.Add(textBox);
string word = "Meow"; // регистр не имеет значения
int startIndex = textBox.Text.ToLower().IndexOf(word.ToLower());
if (startIndex >= 0) {
textBox.SelectionStart = startIndex;
textBox.SelectionLength = word.Length;
}
else
textBox.SelectionStart = 0;
Цитата: Aleksey от 24.08.2023, 17:08Привет yuri,
Выделяет весь текст, код которым ты поделился.
Как сделать, что бы выделял конкретное слово? по индексу? (или как я узнаю, где именно стоит слово которое надо выделить в тексте)
Привет yuri,
Выделяет весь текст, код которым ты поделился.
Как сделать, что бы выделял конкретное слово? по индексу? (или как я узнаю, где именно стоит слово которое надо выделить в тексте)
Цитата: Aleksey от 24.08.2023, 19:06Понял твой код.
Мы в переменную word, загоняем слово, которое нам надо для выделения (string word = "Meow";)
Но, выделение идёт по первому попавшему слову, а если встречаются такие же слова в тексте, то не выделяет их.
Выделяет только одно слово (первое попавшееся)
Понял твой код.
Мы в переменную word, загоняем слово, которое нам надо для выделения (string word = "Meow";)
Но, выделение идёт по первому попавшему слову, а если встречаются такие же слова в тексте, то не выделяет их.
Выделяет только одно слово (первое попавшееся)
Цитата: yuri от 25.08.2023, 03:05Aleksey, тогда можно сделать так: Создай richTextBox и используй его для отображения всего текста. А на кнопку "Найти" вызывай этот метод
[spoiler title="Метод поиска"]
void searchInTheRichBox(string text) { int start = 0; int end = richTextBox1.Text.LastIndexOf(text); while (start < end) { richTextBox1.Find(text, start, richTextBox1.TextLength, RichTextBoxFinds.MatchCase); richTextBox1.SelectionBackColor = Color.Yellow; start = richTextBox1.Text.IndexOf(text, start) + 1; } }[/spoiler]
Aleksey, тогда можно сделать так: Создай richTextBox и используй его для отображения всего текста. А на кнопку "Найти" вызывай этот метод
void searchInTheRichBox(string text) {
int start = 0;
int end = richTextBox1.Text.LastIndexOf(text);
while (start < end) {
richTextBox1.Find(text, start, richTextBox1.TextLength, RichTextBoxFinds.MatchCase);
richTextBox1.SelectionBackColor = Color.Yellow;
start = richTextBox1.Text.IndexOf(text, start) + 1;
}
}
Цитата: Aleksey от 19.09.2023, 17:31Всем привет,
Подскажите пожалуйста, где у меня ошибка? (башка трескается уже👨)[spoiler title="Мой код на нажатие кнопки"]
void button1_Click(object sender, EventArgs e) { if (checkBox1.Checked) { Process.Start("https://"); checkBox2.Enabled = false; checkBox3.Enabled = false; checkBox4.Enabled = false; } else if (!checkBox1.Checked) { checkBox2.Enabled = true; checkBox3.Enabled = true; checkBox4.Enabled = true; } if (checkBox2.Checked) { Process.Start("https://"); checkBox1.Enabled = false; checkBox3.Enabled = false; checkBox4.Enabled = false; } else if (!checkBox2.Checked) { checkBox1.Enabled = true; checkBox3.Enabled = true; checkBox4.Enabled = true; } if (checkBox3.Checked) { Process.Start("https://"); checkBox1.Enabled = false; checkBox2.Enabled = false; checkBox4.Enabled = false; } else if (!checkBox3.Checked) { checkBox1.Enabled = true; checkBox2.Enabled = true; checkBox4.Enabled = true; } if (checkBox4.Checked) { Process.Start("https://www.youtube.com"); checkBox1.Enabled = false; checkBox2.Enabled = false; checkBox3.Enabled = false; } else if (!checkBox4.Checked)) { checkBox1.Enabled = true; checkBox2.Enabled = true; checkBox3.Enabled = true; } }
[/spoiler]
Задача такая: есть 4шт. checkBox и одна кнопка , хочу, что бы поставил одну галочку на любом checkBox, у меня запускалась инструкция по запуску Process.Start и при этом нельзя было нажать галочку на другие 3 штуки checkBox , затем я галочку снимаю и нажимаю ту же кнопку, и опять все свойства checkBox1.Enabled становятся доступные для проставления на любой галочки.
Скорее всего, я запутался в скобках { икранирование}, а может не то свойство проверяю.
Всем привет,
Подскажите пожалуйста, где у меня ошибка? (башка трескается уже👨)
void button1_Click(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
Process.Start("https://");
checkBox2.Enabled = false;
checkBox3.Enabled = false;
checkBox4.Enabled = false;
}
else if (!checkBox1.Checked)
{
checkBox2.Enabled = true;
checkBox3.Enabled = true;
checkBox4.Enabled = true;
}
if (checkBox2.Checked)
{
Process.Start("https://");
checkBox1.Enabled = false;
checkBox3.Enabled = false;
checkBox4.Enabled = false;
}
else if (!checkBox2.Checked)
{
checkBox1.Enabled = true;
checkBox3.Enabled = true;
checkBox4.Enabled = true;
}
if (checkBox3.Checked)
{
Process.Start("https://");
checkBox1.Enabled = false;
checkBox2.Enabled = false;
checkBox4.Enabled = false;
}
else if (!checkBox3.Checked)
{
checkBox1.Enabled = true;
checkBox2.Enabled = true;
checkBox4.Enabled = true;
}
if (checkBox4.Checked)
{
Process.Start("https://www.youtube.com");
checkBox1.Enabled = false;
checkBox2.Enabled = false;
checkBox3.Enabled = false;
}
else if (!checkBox4.Checked))
{
checkBox1.Enabled = true;
checkBox2.Enabled = true;
checkBox3.Enabled = true;
}
}
Задача такая: есть 4шт. checkBox и одна кнопка , хочу, что бы поставил одну галочку на любом checkBox, у меня запускалась инструкция по запуску Process.Start и при этом нельзя было нажать галочку на другие 3 штуки checkBox , затем я галочку снимаю и нажимаю ту же кнопку, и опять все свойства checkBox1.Enabled становятся доступные для проставления на любой галочки.
Скорее всего, я запутался в скобках { икранирование}, а может не то свойство проверяю.
Цитата: Adler от 19.09.2023, 18:28Приветствую.
В код не вникал, но в краткое описание задачи, имхо, больше подходит RadioButton, а не CheckBox.
Приветствую.
В код не вникал, но в краткое описание задачи, имхо, больше подходит RadioButton, а не CheckBox.
Цитата: Aleksey от 19.09.2023, 19:01Приветствую 🖐Adler,
По идее разницы нет, что будет RadioButton или CheckBox.
Выполняемые действия будут одинаковыми. (и там и там нужно что бы после того как выбрал, скрыть остальные Control)
Приветствую 🖐Adler,
По идее разницы нет, что будет RadioButton или CheckBox.
Выполняемые действия будут одинаковыми. (и там и там нужно что бы после того как выбрал, скрыть остальные Control)
Цитата: Adler от 19.09.2023, 19:51Ну вы их не скрываете, а делаете не активными, по сути тем самым исключая возможность одновременно включить несколько CheckBox, а RadioButton так работает "из коробки" и выбрать можно только один.
Ну вы их не скрываете, а делаете не активными, по сути тем самым исключая возможность одновременно включить несколько CheckBox, а RadioButton так работает "из коробки" и выбрать можно только один.
Цитата: Aleksey от 20.09.2023, 14:49Приветствую 🖐Adler,
Проверил с RadioButton этот код.
Вывод, всё же RadioButton не подойдет (так как у него не снимается выбор точки/галочки при повторном нажатии на кнопку).
У CheckBox можно галочку снять в любой момент и нажать кнопку, и в таком случае идёт инструкция на активность других CheckBox (т.е. checkBox1....Enabled = true;).Не могу догадаться, что у меня в коде не так, скорее всего напутал с { } скобками.
Но, мой код который я написал в посте, он работает как надо, только на "Четвёртом " CheckBox, так как надо что бы работало на всех CheckBox или например если закомментировать часть кода, и оставить только для одного CheckBox, то всё работает как надо.
Видео пример. (работает только с CheckBox4 нормально, как хотел бы, но надо, чтоб так работало при каждом нажатии на любой CheckBox).Надеюсь понятен мой ход мысли, что хочу сделать.
Спасибо за помощь.
Приветствую 🖐Adler,
Проверил с RadioButton этот код.
Вывод, всё же RadioButton не подойдет (так как у него не снимается выбор точки/галочки при повторном нажатии на кнопку).
У CheckBox можно галочку снять в любой момент и нажать кнопку, и в таком случае идёт инструкция на активность других CheckBox (т.е. checkBox1....Enabled = true;).
Не могу догадаться, что у меня в коде не так, скорее всего напутал с { } скобками.
Но, мой код который я написал в посте, он работает как надо, только на "Четвёртом " CheckBox, так как надо что бы работало на всех CheckBox или например если закомментировать часть кода, и оставить только для одного CheckBox, то всё работает как надо.
Видео пример. (работает только с CheckBox4 нормально, как хотел бы, но надо, чтоб так работало при каждом нажатии на любой CheckBox).
Надеюсь понятен мой ход мысли, что хочу сделать.
Спасибо за помощь.
Цитата: Aleksey от 21.09.2023, 18:44Всем привет,
Хочу сказать спасибо🤝 yuri, за то, что поделился кодом, на блокировку и разблокировку CheckBox.[spoiler title="Код"]
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ForumHelp { public partial class Form1 : Form { public Form1() { InitializeComponent(); } CheckBox[] allCheckBoxes; // тут хранятся все нужные Тебе checkbox private void Form1_Load(object sender, EventArgs e) { allCheckBoxes = new CheckBox[] { checkBox1, checkBox2, checkBox3, checkBox4, }; // тут мы их назначаем в переменную // Теперь делаем так, чтобы при нажатии на 1 из них, другие блокировались/разблокировались foreach (CheckBox checkbox in allCheckBoxes) checkbox.CheckedChanged += (s, a) => { if (checkbox.Checked) // блокируем все кроме текущего disableCheckBoxes(checkbox); else enableCheckBoxes(); // разблокируем все }; } void disableCheckBoxes(CheckBox exclude) { // функция блокировки, которая принимает checkbox исключение foreach (CheckBox checkBox in allCheckBoxes) { if (checkBox == exclude) continue; checkBox.Enabled = false; } } void enableCheckBoxes() { // разблокировка foreach (CheckBox checkBox in allCheckBoxes) checkBox.Enabled = true; } private void button1_Click(object sender, EventArgs e) { // Твои проверки if (checkBox1.Checked) Process.Start("https://youtu."); if (checkBox2.Checked) Process.Start("https://youtu."); if (checkBox3.Checked) Process.Start("https://youtu."); if (checkBox4.Checked) Process.Start("https://www.youtube.com"); } } }
[/spoiler]
Всем привет,
Хочу сказать спасибо🤝 yuri, за то, что поделился кодом, на блокировку и разблокировку CheckBox.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ForumHelp {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
CheckBox[] allCheckBoxes; // тут хранятся все нужные Тебе checkbox
private void Form1_Load(object sender, EventArgs e) {
allCheckBoxes = new CheckBox[] {
checkBox1,
checkBox2,
checkBox3,
checkBox4,
}; // тут мы их назначаем в переменную
// Теперь делаем так, чтобы при нажатии на 1 из них, другие блокировались/разблокировались
foreach (CheckBox checkbox in allCheckBoxes)
checkbox.CheckedChanged += (s, a) => {
if (checkbox.Checked) // блокируем все кроме текущего
disableCheckBoxes(checkbox);
else
enableCheckBoxes(); // разблокируем все
};
}
void disableCheckBoxes(CheckBox exclude) { // функция блокировки, которая принимает checkbox исключение
foreach (CheckBox checkBox in allCheckBoxes) {
if (checkBox == exclude)
continue;
checkBox.Enabled = false;
}
}
void enableCheckBoxes()
{ // разблокировка
foreach (CheckBox checkBox in allCheckBoxes)
checkBox.Enabled = true;
}
private void button1_Click(object sender, EventArgs e) {
// Твои проверки
if (checkBox1.Checked)
Process.Start("https://youtu.");
if (checkBox2.Checked)
Process.Start("https://youtu.");
if (checkBox3.Checked)
Process.Start("https://youtu.");
if (checkBox4.Checked)
Process.Start("https://www.youtube.com");
}
}
}