В моем проекте есть функция которая добавляет новый checkbox. Функция работает как надо, вот только как сохранить этот checkbox со всеми его параметрами и чтобы при следующем запуске программы он появлялся?
» Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET
dmention
Вот еще один вариант. Ф-ция Format в VBScript не поддерживается.
Вот еще один вариант. Ф-ция Format в VBScript не поддерживается.
Цитата:
как сохранить этот checkbox со всеми его параметрами и чтобы при следующем запуске программы он появлялся?
По идее можно сериализовать его в файл, а потом при запуске программы - десериализовать.
Всем ку!
Знатоки, хелп.
есть класс, внутри этого класса создается гуи.
существует второй класс, внутри которого происходит слежение за файловой системой.
вопрос: как из функции "private static void OnChanged" созданной во втором классе, вставить текст в ричтекст бокс созданный в первом классе.
как взаимодействовать между классами?
Знатоки, хелп.
есть класс, внутри этого класса создается гуи.
существует второй класс, внутри которого происходит слежение за файловой системой.
вопрос: как из функции "private static void OnChanged" созданной во втором классе, вставить текст в ричтекст бокс созданный в первом классе.
как взаимодействовать между классами?
AutoIT
Создавай метод (свойство) паблик в первом - которому будеш передавать строку, а уже этот метод будет сам куда надо вставлять эту строку или если нужно обрабатывать ее как-нить.
Создавай метод (свойство) паблик в первом - которому будеш передавать строку, а уже этот метод будет сам куда надо вставлять эту строку или если нужно обрабатывать ее как-нить.
[more=Код]
Код: namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
int i = 0;
int flag = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (flag == 0)
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i++;
if (i == Caption.Length) flag = 1;
}
else
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i--;
if (i == 0) flag = 0;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (richTextBox1.ForeColor.ToString() == System.Drawing.Color.Black.ToString())
richTextBox1.ForeColor = System.Drawing.Color.Red;
else
richTextBox1.ForeColor = System.Drawing.Color.Black;
}
private void button2_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
TextFromEdit = TextFromEdit + " \n \n JusteG™ \n";
richTextBox1.Text = TextFromEdit;
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
double Num = Convert.ToDouble(TextFromEdit);
richTextBox1.Text = (Num * 2).ToString();
}
private void button4_Click(object sender, EventArgs e)
{
try
{
string[] dirs = System.IO.Directory.GetDirectories(@"C:\");
richTextBox1.Text = "Всего дирректорий на диске С: - " + dirs.Length.ToString() + "\n Список: \n";
foreach (string dir in dirs)
{
richTextBox1.Text = richTextBox1.Text + "\n" + dir;
}
}
catch (Exception)
{
richTextBox1.Text = richTextBox1.Text + "\n" + "False";
}
}
private void button5_Click(object sender, EventArgs e)
{
printDialog1.ShowDialog();
}
}
public class Class1
{
static void main(string[] args)
{
System.IO.FileSystemWatcher watcher = new System.IO.FileSystemWatcher();
watcher.Path = @"C:\";
watcher.NotifyFilter = System.IO.NotifyFilters.LastAccess |
System.IO.NotifyFilters.LastWrite | System.IO.NotifyFilters.FileName |
System.IO.NotifyFilters.DirectoryName;
watcher.Filter = "*.txt";
watcher.Changed += new System.IO.FileSystemEventHandler(OnChanged);
watcher.Created += new System.IO.FileSystemEventHandler(OnCreated);
watcher.Renamed += new System.IO.RenamedEventHandler(OnRenamed);
watcher.Deleted += new System.IO.FileSystemEventHandler(OnDeleted);
watcher.EnableRaisingEvents = true;
}
private static void OnChanged(object sourse,
System.IO.FileSystemEventArgs e)
{
}
private static void OnCreated(object sourse,
System.IO.FileSystemEventArgs e)
{
}
private static void OnRenamed(object sourse,
System.IO.FileSystemEventArgs e)
{
}
private static void OnDeleted(object sourse,
System.IO.FileSystemEventArgs e)
{
}
}
}
Код: namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
int i = 0;
int flag = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (flag == 0)
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i++;
if (i == Caption.Length) flag = 1;
}
else
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i--;
if (i == 0) flag = 0;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (richTextBox1.ForeColor.ToString() == System.Drawing.Color.Black.ToString())
richTextBox1.ForeColor = System.Drawing.Color.Red;
else
richTextBox1.ForeColor = System.Drawing.Color.Black;
}
private void button2_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
TextFromEdit = TextFromEdit + " \n \n JusteG™ \n";
richTextBox1.Text = TextFromEdit;
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
double Num = Convert.ToDouble(TextFromEdit);
richTextBox1.Text = (Num * 2).ToString();
}
private void button4_Click(object sender, EventArgs e)
{
try
{
string[] dirs = System.IO.Directory.GetDirectories(@"C:\");
richTextBox1.Text = "Всего дирректорий на диске С: - " + dirs.Length.ToString() + "\n Список: \n";
foreach (string dir in dirs)
{
richTextBox1.Text = richTextBox1.Text + "\n" + dir;
}
}
catch (Exception)
{
richTextBox1.Text = richTextBox1.Text + "\n" + "False";
}
}
private void button5_Click(object sender, EventArgs e)
{
printDialog1.ShowDialog();
}
}
public class Class1
{
static void main(string[] args)
{
System.IO.FileSystemWatcher watcher = new System.IO.FileSystemWatcher();
watcher.Path = @"C:\";
watcher.NotifyFilter = System.IO.NotifyFilters.LastAccess |
System.IO.NotifyFilters.LastWrite | System.IO.NotifyFilters.FileName |
System.IO.NotifyFilters.DirectoryName;
watcher.Filter = "*.txt";
watcher.Changed += new System.IO.FileSystemEventHandler(OnChanged);
watcher.Created += new System.IO.FileSystemEventHandler(OnCreated);
watcher.Renamed += new System.IO.RenamedEventHandler(OnRenamed);
watcher.Deleted += new System.IO.FileSystemEventHandler(OnDeleted);
watcher.EnableRaisingEvents = true;
}
private static void OnChanged(object sourse,
System.IO.FileSystemEventArgs e)
{
}
private static void OnCreated(object sourse,
System.IO.FileSystemEventArgs e)
{
}
private static void OnRenamed(object sourse,
System.IO.FileSystemEventArgs e)
{
}
private static void OnDeleted(object sourse,
System.IO.FileSystemEventArgs e)
{
}
}
}
1. Подскажите как реализовать такую вещь...
Данные из формы должны сохраняться в базе данных. Планирую использовать для этого БД MS Access.
В форме есть текствое поле (TEXTAREA). В Access для сохранения информации из этого поля создам поле MEMO.
При обратном отображении теста из поля MEMO на сайте текст отображается без переносов строк. Просто как сплошной текст, т.к. естественно там нет <BR>.
Тоже самое и с пробелами. Лишние пробелы при отображении съедаются.
Как сохранять текст из формы в поле MEMO c дескрипторами <BR> или что еще лучше как отображать поле MEMO на сайте с правильным количеством пробелов и переносов строк?
2. Че-то я забыл, могу я в Access заранее создать запросы, а потом обращаться непосредственно к ним, чтобы не прописывать текст запроса (в виде SQL) в файле странички?
Данные из формы должны сохраняться в базе данных. Планирую использовать для этого БД MS Access.
В форме есть текствое поле (TEXTAREA). В Access для сохранения информации из этого поля создам поле MEMO.
При обратном отображении теста из поля MEMO на сайте текст отображается без переносов строк. Просто как сплошной текст, т.к. естественно там нет <BR>.
Тоже самое и с пробелами. Лишние пробелы при отображении съедаются.
Как сохранять текст из формы в поле MEMO c дескрипторами <BR> или что еще лучше как отображать поле MEMO на сайте с правильным количеством пробелов и переносов строк?
2. Че-то я забыл, могу я в Access заранее создать запросы, а потом обращаться непосредственно к ним, чтобы не прописывать текст запроса (в виде SQL) в файле странички?
AutoIT
извини за глупый вопрос - а что ты сделал? я собсно не увидел проблемы ... Если не понял - я тебе нарисую схему про что я тебе говорил:
Код:
public partial class Form1 : Form
{
....
public void SetText(string _string) // здесь название метода можеш свое
{
_richTextBox.Text = _string;
}
....
}
public class Class1
{
....
private static void OnChanged(object sourse,
System.IO.FileSystemEventArgs e)
{
// например такой код, но здесь ты можеш свое вписать - я тебе показал пример использования ...
Form1 _form1 = new Form1;
_form1.SetText = "Bla-Bla-Bla";
}
....
}
извини за глупый вопрос - а что ты сделал? я собсно не увидел проблемы ... Если не понял - я тебе нарисую схему про что я тебе говорил:
Код:
public partial class Form1 : Form
{
....
public void SetText(string _string) // здесь название метода можеш свое
{
_richTextBox.Text = _string;
}
....
}
public class Class1
{
....
private static void OnChanged(object sourse,
System.IO.FileSystemEventArgs e)
{
// например такой код, но здесь ты можеш свое вписать - я тебе показал пример использования ...
Form1 _form1 = new Form1;
_form1.SetText = "Bla-Bla-Bla";
}
....
}
dmention
По п.2 - можно, надо делать так:
Код: OleDbCommand oleCom = new OleDbCommand("имя_запроса", oleCon);
oleCom.CommandType = CommandType.StoredProcedure;
По п.2 - можно, надо делать так:
Код: OleDbCommand oleCom = new OleDbCommand("имя_запроса", oleCon);
oleCom.CommandType = CommandType.StoredProcedure;
BlackVetal
Цитата:
Йа ток начинаю писать на C# =))
Все сделал как ты сказал, неработает ((
[more=Код]namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
int i = 0;
int flag = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (flag == 0)
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i++;
if (i == Caption.Length) flag = 1;
}
else
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i--;
if (i == 0) flag = 0;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (richTextBox1.ForeColor.ToString() == System.Drawing.Color.Black.ToString())
richTextBox1.ForeColor = System.Drawing.Color.Red;
else
richTextBox1.ForeColor = System.Drawing.Color.Black;
}
private void button2_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
TextFromEdit = TextFromEdit + " \n \n JusteG™ \n";
richTextBox1.Text = TextFromEdit;
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
double Num = Convert.ToDouble(TextFromEdit);
richTextBox1.Text = (Num * 2).ToString();
}
private void button4_Click(object sender, EventArgs e)
{
try
{
string[] dirs = System.IO.Directory.GetDirectories(@"C:\");
richTextBox1.Text = "Всего дирректорий на диске С: - " + dirs.Length.ToString() + "\n Список: \n";
foreach (string dir in dirs)
{
richTextBox1.Text = richTextBox1.Text + "\n" + dir;
}
}
catch (Exception)
{
richTextBox1.Text = richTextBox1.Text + "\n" + "False";
}
}
private void button5_Click(object sender, EventArgs e)
{
if (button4.ForeColor == System.Drawing.Color.Red) button4.ForeColor = System.Drawing.Color.Black;
else button4.ForeColor = System.Drawing.Color.Red;
Form1 GUI = new Form1();
GUI.SetText("Запущен процесс слежения за файлами");
}
public void SetText(string EditText)
{
richTextBox1.Text = EditText;
}
}
class FilesWacher
{
static void FWacher()
{
System.IO.FileSystemWatcher Watcher = new System.IO.FileSystemWatcher();
Watcher.Path = @"C:\";
Watcher.NotifyFilter =
System.IO.NotifyFilters.LastAccess | System.IO.NotifyFilters.LastWrite |
System.IO.NotifyFilters.FileName | System.IO.NotifyFilters.DirectoryName;
Watcher.Filter = "*.txt";
Watcher.Changed += new System.IO.FileSystemEventHandler(OnChanged);
Watcher.Created += new System.IO.FileSystemEventHandler(OnCreated);
Watcher.Deleted += new System.IO.FileSystemEventHandler(OnDeleted);
Watcher.Renamed += new System.IO.RenamedEventHandler(OnRenamed);
Watcher.EnableRaisingEvents = true;
Form1 GUI = new Form1();
GUI.SetText("Запущен процесс слежения за файлами");
}
private static void OnChanged(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был изменен");
}
private static void OnCreated(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был создан");
}
private static void OnDeleted(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был удален");
}
private static void OnRenamed(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был переименован");
}
}
}[/more]
Вот полность вся прога под VS 2010, посмотри плз, че йа не так делаю?
Цитата:
извини за глупый вопрос - а что ты сделал? я собсно не увидел проблемы ... Если не понял - я тебе нарисую схему про что я тебе говорил:
Йа ток начинаю писать на C# =))
Все сделал как ты сказал, неработает ((
[more=Код]namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
int i = 0;
int flag = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (flag == 0)
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i++;
if (i == Caption.Length) flag = 1;
}
else
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i--;
if (i == 0) flag = 0;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (richTextBox1.ForeColor.ToString() == System.Drawing.Color.Black.ToString())
richTextBox1.ForeColor = System.Drawing.Color.Red;
else
richTextBox1.ForeColor = System.Drawing.Color.Black;
}
private void button2_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
TextFromEdit = TextFromEdit + " \n \n JusteG™ \n";
richTextBox1.Text = TextFromEdit;
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
double Num = Convert.ToDouble(TextFromEdit);
richTextBox1.Text = (Num * 2).ToString();
}
private void button4_Click(object sender, EventArgs e)
{
try
{
string[] dirs = System.IO.Directory.GetDirectories(@"C:\");
richTextBox1.Text = "Всего дирректорий на диске С: - " + dirs.Length.ToString() + "\n Список: \n";
foreach (string dir in dirs)
{
richTextBox1.Text = richTextBox1.Text + "\n" + dir;
}
}
catch (Exception)
{
richTextBox1.Text = richTextBox1.Text + "\n" + "False";
}
}
private void button5_Click(object sender, EventArgs e)
{
if (button4.ForeColor == System.Drawing.Color.Red) button4.ForeColor = System.Drawing.Color.Black;
else button4.ForeColor = System.Drawing.Color.Red;
Form1 GUI = new Form1();
GUI.SetText("Запущен процесс слежения за файлами");
}
public void SetText(string EditText)
{
richTextBox1.Text = EditText;
}
}
class FilesWacher
{
static void FWacher()
{
System.IO.FileSystemWatcher Watcher = new System.IO.FileSystemWatcher();
Watcher.Path = @"C:\";
Watcher.NotifyFilter =
System.IO.NotifyFilters.LastAccess | System.IO.NotifyFilters.LastWrite |
System.IO.NotifyFilters.FileName | System.IO.NotifyFilters.DirectoryName;
Watcher.Filter = "*.txt";
Watcher.Changed += new System.IO.FileSystemEventHandler(OnChanged);
Watcher.Created += new System.IO.FileSystemEventHandler(OnCreated);
Watcher.Deleted += new System.IO.FileSystemEventHandler(OnDeleted);
Watcher.Renamed += new System.IO.RenamedEventHandler(OnRenamed);
Watcher.EnableRaisingEvents = true;
Form1 GUI = new Form1();
GUI.SetText("Запущен процесс слежения за файлами");
}
private static void OnChanged(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был изменен");
}
private static void OnCreated(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был создан");
}
private static void OnDeleted(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был удален");
}
private static void OnRenamed(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был переименован");
}
}
}[/more]
Вот полность вся прога под VS 2010, посмотри плз, че йа не так делаю?
dmention
На счет пункта 1. В MEMO все сохраняется правильно, а вот с отображением проблемы.
Если нужно отобразить сохраненную строку на странице, как простой текст, то переводы строк нужно таки заменять на тег BR, по другому не получится. Пробелы пропадают, потому что, перед выводом на страницу их нужно заменить на непрерывные пробелы ( ).
На счет пункта 1. В MEMO все сохраняется правильно, а вот с отображением проблемы.
Если нужно отобразить сохраненную строку на странице, как простой текст, то переводы строк нужно таки заменять на тег BR, по другому не получится. Пробелы пропадают, потому что, перед выводом на страницу их нужно заменить на непрерывные пробелы ( ).
GastonR
Спасибо!
Я это в общем то так себе и представлял. Но как это сделать? Получается, что надо каждое сообщение перед выводом на экран брать и анализировать посимвольно, при помощи цикла от начала и до конца. И вместо символов пробела и перевода строки (кстати есть такой символ?) вставлять соответствующие теги...
Не будет ли эта конструкция тормозной? Это же все ложится на плечи отправляющего сервера...
Может есть команда (функция), которая могла бы разом заменить заданные символы на заданный текст?
А еще потребуется иметь возможность редактировать текст в базе из браузера, через страницу администратора. Поэтому предполагаю, что текст из поля MEMO необходимо будет вставить в поле, чтобы дать возможность его отредактировать и после этого его сохранить обратно в базу. В этом случае наверное в нем не надо будет заменять символы? В поле TEXTAREA он правильно должен будет отобразиться из поля MEMO? Не пробывал просто...
Спасибо!
Я это в общем то так себе и представлял. Но как это сделать? Получается, что надо каждое сообщение перед выводом на экран брать и анализировать посимвольно, при помощи цикла от начала и до конца. И вместо символов пробела и перевода строки (кстати есть такой символ?) вставлять соответствующие теги...
Не будет ли эта конструкция тормозной? Это же все ложится на плечи отправляющего сервера...
Может есть команда (функция), которая могла бы разом заменить заданные символы на заданный текст?
А еще потребуется иметь возможность редактировать текст в базе из браузера, через страницу администратора. Поэтому предполагаю, что текст из поля MEMO необходимо будет вставить в поле, чтобы дать возможность его отредактировать и после этого его сохранить обратно в базу. В этом случае наверное в нем не надо будет заменять символы? В поле TEXTAREA он правильно должен будет отобразиться из поля MEMO? Не пробывал просто...
dmention
string.Replace разве не подойдет?
перевод строки - это строка Enviroment.NewLine
string.Replace разве не подойдет?
перевод строки - это строка Enviroment.NewLine
StanFreeWare
Спасибо! Попробую. Не знаю такую команду, честно скажу, с asp приходится работать очень-очень мало.
А вообще в HTML есть такой дескриптор <PRE>, который вроде как задает заранее отформатированный текст. Он никак не может тут пригодиться?
Спасибо! Попробую. Не знаю такую команду, честно скажу, с asp приходится работать очень-очень мало.
А вообще в HTML есть такой дескриптор <PRE>, который вроде как задает заранее отформатированный текст. Он никак не может тут пригодиться?
dmention
Вобще на самом деле таких проблем не должно быть. Если содержимое попадает в базу с переносами строк, то и отображаться в textarea должно так же, если конечно вы используете что-то похожее на это:
Код: <asp:textbox textmode="multiline" />
Вобще на самом деле таких проблем не должно быть. Если содержимое попадает в базу с переносами строк, то и отображаться в textarea должно так же, если конечно вы используете что-то похожее на это:
Код: <asp:textbox textmode="multiline" />
Уважаемые знатоки.
Я третий день пишу на C#, просьба не шпунять сходу =))
Ранее полтора года писал на AutoIT, стало маловато его, вот, учусь.
Есть [more=код]namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
int i = 0;
int flag = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (flag == 0)
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i++;
if (i == Caption.Length) flag = 1;
}
else
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i--;
if (i == 0) flag = 0;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (richTextBox1.ForeColor.ToString() == System.Drawing.Color.Black.ToString())
richTextBox1.ForeColor = System.Drawing.Color.Red;
else
richTextBox1.ForeColor = System.Drawing.Color.Black;
}
private void button2_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
TextFromEdit = TextFromEdit + " \n \n JusteG™ \n";
richTextBox1.Text = TextFromEdit;
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
double Num = Convert.ToDouble(TextFromEdit);
richTextBox1.Text = (Num * 2).ToString();
}
private void button4_Click(object sender, EventArgs e)
{
try
{
string[] dirs = System.IO.Directory.GetDirectories(@"C:\");
richTextBox1.Text = "Всего дирректорий на диске С: - " + dirs.Length.ToString() + "\n Список: \n";
foreach (string dir in dirs)
{
richTextBox1.Text = richTextBox1.Text + "\n" + dir;
}
}
catch (Exception)
{
richTextBox1.Text = richTextBox1.Text + "\n" + "False";
}
}
private void button5_Click(object sender, EventArgs e)
{
if (button4.ForeColor == System.Drawing.Color.Red) button4.ForeColor = System.Drawing.Color.Black;
else button4.ForeColor = System.Drawing.Color.Red;
Form1 GUI = new Form1();
GUI.SetText("Запущен процесс слежения за файлами");
}
public void SetText(string EditText)
{
richTextBox1.Text = EditText;
}
}
class FilesWacher
{
static void FWacher()
{
System.IO.FileSystemWatcher Watcher = new System.IO.FileSystemWatcher();
Watcher.Path = @"C:\";
Watcher.NotifyFilter =
System.IO.NotifyFilters.LastAccess | System.IO.NotifyFilters.LastWrite |
System.IO.NotifyFilters.FileName | System.IO.NotifyFilters.DirectoryName;
Watcher.Filter = "*.txt";
Watcher.Changed += new System.IO.FileSystemEventHandler(OnChanged);
Watcher.Created += new System.IO.FileSystemEventHandler(OnCreated);
Watcher.Deleted += new System.IO.FileSystemEventHandler(OnDeleted);
Watcher.Renamed += new System.IO.RenamedEventHandler(OnRenamed);
Watcher.EnableRaisingEvents = true;
Form1 GUI = new Form1();
GUI.SetText("Запущен процесс слежения за файлами");
}
private static void OnChanged(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был изменен");
}
private static void OnCreated(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был создан");
}
private static void OnDeleted(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был удален");
}
private static void OnRenamed(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был переименован");
}
}
}[/more] который представляет собой полигон для моих опытов и в принцпе никакой ценности не представлят, я хочу чтобы он "следил" за изменениями на диске "С:" по маске. И сообщал об изменениях в Текст боксе. подскажите, что я делаю не так. Да, и будет неплохо если укажете на ошибки и недочеты в коде, не просто так - твой код набор символов, а толково указать на ошибку и объяснить почему надо делать по другому а не так как сделал я.
На всякий случай, вот весь проект под VS2010
Я третий день пишу на C#, просьба не шпунять сходу =))
Ранее полтора года писал на AutoIT, стало маловато его, вот, учусь.
Есть [more=код]namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
int i = 0;
int flag = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (flag == 0)
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i++;
if (i == Caption.Length) flag = 1;
}
else
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i--;
if (i == 0) flag = 0;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (richTextBox1.ForeColor.ToString() == System.Drawing.Color.Black.ToString())
richTextBox1.ForeColor = System.Drawing.Color.Red;
else
richTextBox1.ForeColor = System.Drawing.Color.Black;
}
private void button2_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
TextFromEdit = TextFromEdit + " \n \n JusteG™ \n";
richTextBox1.Text = TextFromEdit;
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
double Num = Convert.ToDouble(TextFromEdit);
richTextBox1.Text = (Num * 2).ToString();
}
private void button4_Click(object sender, EventArgs e)
{
try
{
string[] dirs = System.IO.Directory.GetDirectories(@"C:\");
richTextBox1.Text = "Всего дирректорий на диске С: - " + dirs.Length.ToString() + "\n Список: \n";
foreach (string dir in dirs)
{
richTextBox1.Text = richTextBox1.Text + "\n" + dir;
}
}
catch (Exception)
{
richTextBox1.Text = richTextBox1.Text + "\n" + "False";
}
}
private void button5_Click(object sender, EventArgs e)
{
if (button4.ForeColor == System.Drawing.Color.Red) button4.ForeColor = System.Drawing.Color.Black;
else button4.ForeColor = System.Drawing.Color.Red;
Form1 GUI = new Form1();
GUI.SetText("Запущен процесс слежения за файлами");
}
public void SetText(string EditText)
{
richTextBox1.Text = EditText;
}
}
class FilesWacher
{
static void FWacher()
{
System.IO.FileSystemWatcher Watcher = new System.IO.FileSystemWatcher();
Watcher.Path = @"C:\";
Watcher.NotifyFilter =
System.IO.NotifyFilters.LastAccess | System.IO.NotifyFilters.LastWrite |
System.IO.NotifyFilters.FileName | System.IO.NotifyFilters.DirectoryName;
Watcher.Filter = "*.txt";
Watcher.Changed += new System.IO.FileSystemEventHandler(OnChanged);
Watcher.Created += new System.IO.FileSystemEventHandler(OnCreated);
Watcher.Deleted += new System.IO.FileSystemEventHandler(OnDeleted);
Watcher.Renamed += new System.IO.RenamedEventHandler(OnRenamed);
Watcher.EnableRaisingEvents = true;
Form1 GUI = new Form1();
GUI.SetText("Запущен процесс слежения за файлами");
}
private static void OnChanged(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был изменен");
}
private static void OnCreated(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был создан");
}
private static void OnDeleted(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был удален");
}
private static void OnRenamed(object sourse, System.IO.FileSystemEventArgs e)
{
Form1 GUI = new Form1();
GUI.SetText("Файл: " + e.FullPath + " был переименован");
}
}
}[/more] который представляет собой полигон для моих опытов и в принцпе никакой ценности не представлят, я хочу чтобы он "следил" за изменениями на диске "С:" по маске. И сообщал об изменениях в Текст боксе. подскажите, что я делаю не так. Да, и будет неплохо если укажете на ошибки и недочеты в коде, не просто так - твой код набор символов, а толково указать на ошибку и объяснить почему надо делать по другому а не так как сделал я.
На всякий случай, вот весь проект под VS2010
AutoIT
Первая проблема сейчас в том, что твои два класса вообще не связаны между собой.
Первая проблема сейчас в том, что твои два класса вообще не связаны между собой.
derelict
Спасибо, а как их связать?
Спасибо, а как их связать?
Ну допустим в Form1_Load написать:
Код: FilesWacher.FWacher();
Код: FilesWacher.FWacher();
dmention
Цитата:
Про Replace уже сказали. Только string.Replace это донНЕТ, а тебе нужна просто ф-ция Replace.
Цитата:
Нет, не надо. Текст в базе должен храниться в том виде, в котором его ввел пользователь. А уже при отображении этого текста, нужно делать замену. Замена нужна только если текст из базы будет отображаться как простой текст. Если текст будет отображаться с помощью какого-нибудь контрола, все должно быть в порядке.
Цитата:
В Windows целых два Это последовательность символов 13 и 10. В .NET это Enviroment.NewLine или \r\n, в VB6/VBScript это vbCrLf или Char(13) & Char(10).
Цитата:
Получается, что надо каждое сообщение перед выводом на экран брать и анализировать посимвольно, при помощи цикла от начала и до конца.
Про Replace уже сказали. Только string.Replace это донНЕТ, а тебе нужна просто ф-ция Replace.
Цитата:
...
В этом случае наверное в нем не надо будет заменять символы? В поле TEXTAREA он правильно должен будет отобразиться из поля MEMO?
Нет, не надо. Текст в базе должен храниться в том виде, в котором его ввел пользователь. А уже при отображении этого текста, нужно делать замену. Замена нужна только если текст из базы будет отображаться как простой текст. Если текст будет отображаться с помощью какого-нибудь контрола, все должно быть в порядке.
Цитата:
...
И вместо символов пробела и перевода строки (кстати есть такой символ?)
В Windows целых два Это последовательность символов 13 и 10. В .NET это Enviroment.NewLine или \r\n, в VB6/VBScript это vbCrLf или Char(13) & Char(10).
derelict
Ок, сделал, заработало.
А как теперь из второго класса сделать запись в текст бокс?
Ок, сделал, заработало.
А как теперь из второго класса сделать запись в текст бокс?
AutoIT
Напрямую обращаться к компонентам формы из другого потока не получится, поэтому должно быть приблизительно так:
[more]
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
int i = 0;
int flag = 0;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
FilesWacher.FWacher(this);
}
private void timer1_Tick(object sender, EventArgs e)
{
if (flag == 0)
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i++;
if (i == Caption.Length) flag = 1;
}
else
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i--;
if (i == 0) flag = 0;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (richTextBox1.ForeColor.ToString() == System.Drawing.Color.Black.ToString())
richTextBox1.ForeColor = System.Drawing.Color.Red;
else
richTextBox1.ForeColor = System.Drawing.Color.Black;
}
private void button2_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
TextFromEdit = TextFromEdit + " \n \n JusteG™ \n";
richTextBox1.Text = TextFromEdit;
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
double Num = Convert.ToDouble(TextFromEdit);
richTextBox1.Text = (Num * 2).ToString();
}
private void button4_Click(object sender, EventArgs e)
{
try
{
string[] dirs = System.IO.Directory.GetDirectories(@"C:\");
richTextBox1.Text = "Всего дирректорий на диске С: - " + dirs.Length.ToString() + "\n Список: \n";
foreach (string dir in dirs)
{
richTextBox1.Text = richTextBox1.Text + "\n" + dir;
}
}
catch (Exception)
{
richTextBox1.Text = richTextBox1.Text + "\n" + "False";
}
}
private void button5_Click(object sender, EventArgs e)
{
if (button4.ForeColor == System.Drawing.Color.Red) button4.ForeColor = System.Drawing.Color.Black;
else button4.ForeColor = System.Drawing.Color.Red;
}
public void SetText(string EditText)
{
richTextBox1.Text += EditText;
}
}
public class FilesWacher
{
private static Form1 parent;
public static void FWacher(Form1 parent)
{
FilesWacher.parent = parent;
System.IO.FileSystemWatcher Watcher = new System.IO.FileSystemWatcher();
Watcher.Path = @"C:\";
Watcher.NotifyFilter =
System.IO.NotifyFilters.LastAccess | System.IO.NotifyFilters.LastWrite |
System.IO.NotifyFilters.FileName | System.IO.NotifyFilters.DirectoryName;
Watcher.Filter = "*.txt";
Watcher.Changed += new System.IO.FileSystemEventHandler(OnChanged);
Watcher.Created += new System.IO.FileSystemEventHandler(OnCreated);
Watcher.Deleted += new System.IO.FileSystemEventHandler(OnDeleted);
Watcher.Renamed += new System.IO.RenamedEventHandler(OnRenamed);
Watcher.EnableRaisingEvents = true;
System.IO.StreamWriter sw;
sw = System.IO.File.AppendText(@"C:\Test.txt");
sw.WriteLine("Запущен процесс слежения за файлами");
sw.Close();
parent.SetText("Запущен процесс слежения за файлами");
}
private static void OnChanged(object sourse, System.IO.FileSystemEventArgs e)
{
parent.Invoke(new MethodInvoker(delegate() { parent.SetText("Файл: " + e.FullPath + " был изменен"); }));
}
private static void OnCreated(object sourse, System.IO.FileSystemEventArgs e)
{
parent.Invoke(new MethodInvoker(delegate() { parent.SetText("Файл: " + e.FullPath + " был создан"); }));
}
private static void OnDeleted(object sourse, System.IO.FileSystemEventArgs e)
{
parent.Invoke(new MethodInvoker(delegate() { parent.SetText("Файл: " + e.FullPath + " был удален"); }));
}
private static void OnRenamed(object sourse, System.IO.FileSystemEventArgs e)
{
parent.Invoke(new MethodInvoker(delegate() { parent.SetText("Файл: " + e.FullPath + " был переименован"); }));
}
}
}
Напрямую обращаться к компонентам формы из другого потока не получится, поэтому должно быть приблизительно так:
[more]
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
int i = 0;
int flag = 0;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
FilesWacher.FWacher(this);
}
private void timer1_Tick(object sender, EventArgs e)
{
if (flag == 0)
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i++;
if (i == Caption.Length) flag = 1;
}
else
{
string Caption = "Песочница by JusteG™ ";
this.Text = Caption.Substring(0, i);
i--;
if (i == 0) flag = 0;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (richTextBox1.ForeColor.ToString() == System.Drawing.Color.Black.ToString())
richTextBox1.ForeColor = System.Drawing.Color.Red;
else
richTextBox1.ForeColor = System.Drawing.Color.Black;
}
private void button2_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
TextFromEdit = TextFromEdit + " \n \n JusteG™ \n";
richTextBox1.Text = TextFromEdit;
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
string TextFromEdit = richTextBox1.Text.ToString();
double Num = Convert.ToDouble(TextFromEdit);
richTextBox1.Text = (Num * 2).ToString();
}
private void button4_Click(object sender, EventArgs e)
{
try
{
string[] dirs = System.IO.Directory.GetDirectories(@"C:\");
richTextBox1.Text = "Всего дирректорий на диске С: - " + dirs.Length.ToString() + "\n Список: \n";
foreach (string dir in dirs)
{
richTextBox1.Text = richTextBox1.Text + "\n" + dir;
}
}
catch (Exception)
{
richTextBox1.Text = richTextBox1.Text + "\n" + "False";
}
}
private void button5_Click(object sender, EventArgs e)
{
if (button4.ForeColor == System.Drawing.Color.Red) button4.ForeColor = System.Drawing.Color.Black;
else button4.ForeColor = System.Drawing.Color.Red;
}
public void SetText(string EditText)
{
richTextBox1.Text += EditText;
}
}
public class FilesWacher
{
private static Form1 parent;
public static void FWacher(Form1 parent)
{
FilesWacher.parent = parent;
System.IO.FileSystemWatcher Watcher = new System.IO.FileSystemWatcher();
Watcher.Path = @"C:\";
Watcher.NotifyFilter =
System.IO.NotifyFilters.LastAccess | System.IO.NotifyFilters.LastWrite |
System.IO.NotifyFilters.FileName | System.IO.NotifyFilters.DirectoryName;
Watcher.Filter = "*.txt";
Watcher.Changed += new System.IO.FileSystemEventHandler(OnChanged);
Watcher.Created += new System.IO.FileSystemEventHandler(OnCreated);
Watcher.Deleted += new System.IO.FileSystemEventHandler(OnDeleted);
Watcher.Renamed += new System.IO.RenamedEventHandler(OnRenamed);
Watcher.EnableRaisingEvents = true;
System.IO.StreamWriter sw;
sw = System.IO.File.AppendText(@"C:\Test.txt");
sw.WriteLine("Запущен процесс слежения за файлами");
sw.Close();
parent.SetText("Запущен процесс слежения за файлами");
}
private static void OnChanged(object sourse, System.IO.FileSystemEventArgs e)
{
parent.Invoke(new MethodInvoker(delegate() { parent.SetText("Файл: " + e.FullPath + " был изменен"); }));
}
private static void OnCreated(object sourse, System.IO.FileSystemEventArgs e)
{
parent.Invoke(new MethodInvoker(delegate() { parent.SetText("Файл: " + e.FullPath + " был создан"); }));
}
private static void OnDeleted(object sourse, System.IO.FileSystemEventArgs e)
{
parent.Invoke(new MethodInvoker(delegate() { parent.SetText("Файл: " + e.FullPath + " был удален"); }));
}
private static void OnRenamed(object sourse, System.IO.FileSystemEventArgs e)
{
parent.Invoke(new MethodInvoker(delegate() { parent.SetText("Файл: " + e.FullPath + " был переименован"); }));
}
}
}
GastonR
Спасибо, парни! По ходу благодаря Вам у меня все должно получиться!
Спасибо, парни! По ходу благодаря Вам у меня все должно получиться!
derelict
Спасибише! =)
Слушай, если не трудно, опиши как это работает, я за методы delegate и Invoke только по наслышке знаю.
Спасибише! =)
Слушай, если не трудно, опиши как это работает, я за методы delegate и Invoke только по наслышке знаю.
AutoIT
Цитата:
Это работает так: статья rsdn.ru
Сам на ней разбирался в свое время )
Цитата:
Слушай, если не трудно, опиши как это работает, я за методы delegate и Invoke только по наслышке знаю.
Это работает так: статья rsdn.ru
Сам на ней разбирался в свое время )
Цитата:
По идее можно сериализовать его в файл, а потом при запуске программы - десериализовать.
Я со своим преподом поговорил, он вообще не знает что такое сериализация. Он мне сказал так: У тебя есть ini-файл, вот в него и записывай все настройки. В самой программе у тебя должна быть определена переменная типа checkbox. А потом при загрузке программы, функция должна прочитать параметры и восстановить все checkbox'ы. Кто нибудь может объяснить мне, что он имел ввиду?
Еще я искал статьи с примерами про сериализацию. В MSDN половина на русском, половина на английском, читать неудобно. Да и не понятно. У кого нибудь есть материал на данную тему?
blaro
Ну на самом деле можно ограничиться и ini-файлом. У чекбокса какая информация тебя интересует? Скорее всего:
- имя
- текст
- состояние
- положение на форме (допустим)
Можно создать в ini-файле секцию под каждый чекбокс и оттуда потом считывать информацию, то есть получится приблизительно так:
Код:
[Checkbox 1]
Name = chb1
Text = Text1
Checked = true
[Checkbox 2]
.......
Ну на самом деле можно ограничиться и ini-файлом. У чекбокса какая информация тебя интересует? Скорее всего:
- имя
- текст
- состояние
- положение на форме (допустим)
Можно создать в ini-файле секцию под каждый чекбокс и оттуда потом считывать информацию, то есть получится приблизительно так:
Код:
[Checkbox 1]
Name = chb1
Text = Text1
Checked = true
[Checkbox 2]
.......
Допустим это так и будет. Надо подумать.
А что есть почитать про сериализацию?
А что есть почитать про сериализацию?
blaro
Насчет сериализации в целом посмотри про XmlSerializer и BinaryFormatter. Но применительно к твоей ситуации я погорячился немного - сериализовать чекбокс в файл не получится. Можно только создать коллекцию свойств чекбокса и сериализовать ее, ну или использовать ini-файл приблизительно как написано выше.
Насчет сериализации в целом посмотри про XmlSerializer и BinaryFormatter. Но применительно к твоей ситуации я погорячился немного - сериализовать чекбокс в файл не получится. Можно только создать коллекцию свойств чекбокса и сериализовать ее, ну или использовать ini-файл приблизительно как написано выше.
Уважаемые коллеги,
если у кого-нибудь есть установленный MSDN, прошу сохранить в вордовском документе статью ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/shellcc/platform/commctls/richedit/richeditcontrols/usingricheditcontrols.htm#rich_edit_shortcut_keys
и закинуть мне ссылку на него (можно в личку).
Похоже, это единственный способ узнать список hotkey в System.Windows.Forms.RichTextBox.
Cудя по предварительным результатам поиска, нет способа запретить их в данном контроле, чем для каждого лишнего хоткея обрабатывать его комбинацию клавиш и делать ей e.Handled = true...
если у кого-нибудь есть установленный MSDN, прошу сохранить в вордовском документе статью ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/shellcc/platform/commctls/richedit/richeditcontrols/usingricheditcontrols.htm#rich_edit_shortcut_keys
и закинуть мне ссылку на него (можно в личку).
Похоже, это единственный способ узнать список hotkey в System.Windows.Forms.RichTextBox.
Cудя по предварительным результатам поиска, нет способа запретить их в данном контроле, чем для каждого лишнего хоткея обрабатывать его комбинацию клавиш и делать ей e.Handled = true...
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
Предыдущая тема: Как удалить/добавить/отключить/включить устройство?
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.