Вы должны войти, чтобы создавать сообщения и темы.

Пробую изучать C# нужна подсказка или помощ

1◄Страница 7 из 7

Всем привет,

Выкладываю программу 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. 
Всем кто помогал и приложил 👐 большое спасибо.

Всем привет,
Давненько не пилил ни чего, то комп навернулся, пока нашёл, да пока руки дошли🙄
Вопрос такой у меня, как в textBox1 выделить конкретное слово?
Например:
Есть textBox1 и в нём есть много текста, из этого всего текста нужно выделить одно слово.
Нужно выделить из рандомного текста, именно нужное слово, которое я хочу.

Спойлер

Как выделять, от заданной точки до конца или до куда укажем, я знаю.
// задаём начальную точку (с какого символа выделять)
textBox1.SelectionStart = 3;
// задаём конечную точку (до какого символа выделять)
textBox1.SelectionLength = textBox1.Text.Length;    // в данном случае до конца текста

Что ещё приходит в голову:
Можно попробовать задать вопрос.

if (textBox1.Text.Contains("пожалуйста,"))
{
textBox1.Selection       //  и дальше не знаю.😨
}

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; 

Привет yuri, 
Выделяет весь текст, код которым ты поделился.
Как сделать, что бы выделял конкретное слово? по индексу? (или как я узнаю, где именно стоит слово которое надо выделить в тексте)

Понял твой код.
Мы в переменную word, загоняем слово, которое нам надо для выделения (string word = "Meow";)
Но, выделение идёт по первому попавшему слову, а если встречаются такие же слова в тексте, то не выделяет их.
Выделяет только одно слово (первое попавшееся)

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;
    }
}

Привет✌yuri, 
Не совсем то, что хотел бы. Спасибо за помощь и отзывчивость. Идём дальше...👀

Всем привет,
Подскажите пожалуйста, где у меня ошибка? (башка трескается уже👨)

Мой код на нажатие кнопки

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 становятся доступные для проставления на любой галочки.
Скорее всего, я запутался в скобках { икранирование}, а может не то свойство проверяю.

Приветствую.
В код не вникал, но в краткое описание задачи, имхо, больше подходит RadioButton, а не CheckBox.

Приветствую 🖐Adler, 
По идее разницы нет, что будет RadioButton или CheckBox.
Выполняемые действия будут одинаковыми. (и там и там нужно что бы после того как выбрал, скрыть остальные Control)

Ну вы их не скрываете, а делаете не активными, по сути тем самым исключая возможность одновременно включить несколько CheckBox, а RadioButton так работает "из коробки" и выбрать можно только один.

Приветствую 🖐Adler, 
Проверил с RadioButton этот код.
Вывод, всё же RadioButton не подойдет (так как у него не снимается выбор точки/галочки при повторном нажатии на кнопку).
У CheckBox можно галочку снять в любой момент и нажать кнопку, и в таком случае идёт инструкция на активность других CheckBox (т.е. checkBox1....Enabled = true;).

Не могу догадаться, что  у меня в коде не так, скорее всего напутал с { } скобками.
Но, мой код который я написал в посте, он работает как надо, только на "Четвёртом " CheckBox, так как надо что бы работало на всех CheckBox или например если закомментировать часть кода, и оставить только для одного CheckBox, то всё работает как надо.
Видео пример. (работает только с CheckBox4 нормально, как хотел бы, но надо, чтоб так работало при каждом нажатии на любой CheckBox).

Надеюсь понятен мой ход мысли, что хочу сделать.
Спасибо за помощь.

Всем привет,
Хочу сказать спасибо🤝 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");

        }
    }

}

 

1◄Страница 7 из 7