Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET

Автор: blaro
Дата сообщения: 16.12.2009 15:01
В моем проекте есть функция которая добавляет новый checkbox. Функция работает как надо, вот только как сохранить этот checkbox со всеми его параметрами и чтобы при следующем запуске программы он появлялся?
Автор: GastonR
Дата сообщения: 16.12.2009 15:22
dmention
Вот еще один вариант. Ф-ция Format в VBScript не поддерживается.
Автор: derelict
Дата сообщения: 16.12.2009 17:05

Цитата:
как сохранить этот checkbox со всеми его параметрами и чтобы при следующем запуске программы он появлялся?

По идее можно сериализовать его в файл, а потом при запуске программы - десериализовать.
Автор: AutoIT
Дата сообщения: 17.12.2009 05:08
Всем ку!
Знатоки, хелп.
есть класс, внутри этого класса создается гуи.
существует второй класс, внутри которого происходит слежение за файловой системой.

вопрос: как из функции "private static void OnChanged" созданной во втором классе, вставить текст в ричтекст бокс созданный в первом классе.
как взаимодействовать между классами?
Автор: BlackVetal
Дата сообщения: 17.12.2009 05:58
AutoIT
Создавай метод (свойство) паблик в первом - которому будеш передавать строку, а уже этот метод будет сам куда надо вставлять эту строку или если нужно обрабатывать ее как-нить.
Автор: AutoIT
Дата сообщения: 17.12.2009 07:07
[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)
{

}
}
}
Автор: dmention
Дата сообщения: 17.12.2009 07:56
1. Подскажите как реализовать такую вещь...

Данные из формы должны сохраняться в базе данных. Планирую использовать для этого БД MS Access.

В форме есть текствое поле (TEXTAREA). В Access для сохранения информации из этого поля создам поле MEMO.

При обратном отображении теста из поля MEMO на сайте текст отображается без переносов строк. Просто как сплошной текст, т.к. естественно там нет <BR>.

Тоже самое и с пробелами. Лишние пробелы при отображении съедаются.

Как сохранять текст из формы в поле MEMO c дескрипторами <BR> или что еще лучше как отображать поле MEMO на сайте с правильным количеством пробелов и переносов строк?

2. Че-то я забыл, могу я в Access заранее создать запросы, а потом обращаться непосредственно к ним, чтобы не прописывать текст запроса (в виде SQL) в файле странички?
Автор: BlackVetal
Дата сообщения: 17.12.2009 08:44
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";
}

....
}
Автор: derelict
Дата сообщения: 17.12.2009 10:19
dmention
По п.2 - можно, надо делать так:

Код: OleDbCommand oleCom = new OleDbCommand("имя_запроса", oleCon);
oleCom.CommandType = CommandType.StoredProcedure;
Автор: AutoIT
Дата сообщения: 17.12.2009 13:33
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, посмотри плз, че йа не так делаю?
Автор: GastonR
Дата сообщения: 17.12.2009 13:38
dmention
На счет пункта 1. В MEMO все сохраняется правильно, а вот с отображением проблемы.
Если нужно отобразить сохраненную строку на странице, как простой текст, то переводы строк нужно таки заменять на тег BR, по другому не получится. Пробелы пропадают, потому что, перед выводом на страницу их нужно заменить на непрерывные пробелы (&nbsp;).
Автор: dmention
Дата сообщения: 17.12.2009 16:28
GastonR
Спасибо!
Я это в общем то так себе и представлял. Но как это сделать? Получается, что надо каждое сообщение перед выводом на экран брать и анализировать посимвольно, при помощи цикла от начала и до конца. И вместо символов пробела и перевода строки (кстати есть такой символ?) вставлять соответствующие теги...

Не будет ли эта конструкция тормозной? Это же все ложится на плечи отправляющего сервера...

Может есть команда (функция), которая могла бы разом заменить заданные символы на заданный текст?

А еще потребуется иметь возможность редактировать текст в базе из браузера, через страницу администратора. Поэтому предполагаю, что текст из поля MEMO необходимо будет вставить в поле, чтобы дать возможность его отредактировать и после этого его сохранить обратно в базу. В этом случае наверное в нем не надо будет заменять символы? В поле TEXTAREA он правильно должен будет отобразиться из поля MEMO? Не пробывал просто...

Автор: StanFreeWare
Дата сообщения: 17.12.2009 16:32
dmention
string.Replace разве не подойдет?
перевод строки - это строка Enviroment.NewLine
Автор: dmention
Дата сообщения: 17.12.2009 16:36
StanFreeWare

Спасибо! Попробую. Не знаю такую команду, честно скажу, с asp приходится работать очень-очень мало.

А вообще в HTML есть такой дескриптор <PRE>, который вроде как задает заранее отформатированный текст. Он никак не может тут пригодиться?
Автор: derelict
Дата сообщения: 17.12.2009 16:53
dmention
Вобще на самом деле таких проблем не должно быть. Если содержимое попадает в базу с переносами строк, то и отображаться в textarea должно так же, если конечно вы используете что-то похожее на это:

Код: <asp:textbox textmode="multiline" />
Автор: AutoIT
Дата сообщения: 17.12.2009 17:04
Уважаемые знатоки.
Я третий день пишу на 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
Автор: derelict
Дата сообщения: 17.12.2009 17:06
AutoIT
Первая проблема сейчас в том, что твои два класса вообще не связаны между собой.
Автор: AutoIT
Дата сообщения: 17.12.2009 17:11
derelict
Спасибо, а как их связать?
Автор: derelict
Дата сообщения: 17.12.2009 17:34
Ну допустим в Form1_Load написать:

Код: FilesWacher.FWacher();
Автор: GastonR
Дата сообщения: 17.12.2009 17:56
dmention

Цитата:
Получается, что надо каждое сообщение перед выводом на экран брать и анализировать посимвольно, при помощи цикла от начала и до конца.

Про Replace уже сказали. Только string.Replace это донНЕТ, а тебе нужна просто ф-ция Replace.

Цитата:
...
В этом случае наверное в нем не надо будет заменять символы? В поле TEXTAREA он правильно должен будет отобразиться из поля MEMO?

Нет, не надо. Текст в базе должен храниться в том виде, в котором его ввел пользователь. А уже при отображении этого текста, нужно делать замену. Замена нужна только если текст из базы будет отображаться как простой текст. Если текст будет отображаться с помощью какого-нибудь контрола, все должно быть в порядке.

Цитата:
...
И вместо символов пробела и перевода строки (кстати есть такой символ?)

В Windows целых два Это последовательность символов 13 и 10. В .NET это Enviroment.NewLine или \r\n, в VB6/VBScript это vbCrLf или Char(13) & Char(10).

Автор: AutoIT
Дата сообщения: 17.12.2009 18:33
derelict
Ок, сделал, заработало.
А как теперь из второго класса сделать запись в текст бокс?
Автор: derelict
Дата сообщения: 17.12.2009 20:46
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 + " был переименован"); }));
}
}
}
Автор: dmention
Дата сообщения: 17.12.2009 21:46
GastonR
Спасибо, парни! По ходу благодаря Вам у меня все должно получиться!
Автор: AutoIT
Дата сообщения: 18.12.2009 04:10
derelict
Спасибише! =)
Слушай, если не трудно, опиши как это работает, я за методы delegate и Invoke только по наслышке знаю.
Автор: StanFreeWare
Дата сообщения: 18.12.2009 05:27
AutoIT

Цитата:
Слушай, если не трудно, опиши как это работает, я за методы delegate и Invoke только по наслышке знаю.

Это работает так: статья rsdn.ru
Сам на ней разбирался в свое время )
Автор: blaro
Дата сообщения: 18.12.2009 15:16

Цитата:
По идее можно сериализовать его в файл, а потом при запуске программы - десериализовать.

Я со своим преподом поговорил, он вообще не знает что такое сериализация. Он мне сказал так: У тебя есть ini-файл, вот в него и записывай все настройки. В самой программе у тебя должна быть определена переменная типа checkbox. А потом при загрузке программы, функция должна прочитать параметры и восстановить все checkbox'ы. Кто нибудь может объяснить мне, что он имел ввиду?
Еще я искал статьи с примерами про сериализацию. В MSDN половина на русском, половина на английском, читать неудобно. Да и не понятно. У кого нибудь есть материал на данную тему?
Автор: derelict
Дата сообщения: 18.12.2009 15:29
blaro
Ну на самом деле можно ограничиться и ini-файлом. У чекбокса какая информация тебя интересует? Скорее всего:
- имя
- текст
- состояние
- положение на форме (допустим)
Можно создать в ini-файле секцию под каждый чекбокс и оттуда потом считывать информацию, то есть получится приблизительно так:

Код:
[Checkbox 1]
Name = chb1
Text = Text1
Checked = true

[Checkbox 2]
.......
Автор: blaro
Дата сообщения: 18.12.2009 18:25
Допустим это так и будет. Надо подумать.
А что есть почитать про сериализацию?
Автор: derelict
Дата сообщения: 18.12.2009 20:24
blaro
Насчет сериализации в целом посмотри про XmlSerializer и BinaryFormatter. Но применительно к твоей ситуации я погорячился немного - сериализовать чекбокс в файл не получится. Можно только создать коллекцию свойств чекбокса и сериализовать ее, ну или использовать ini-файл приблизительно как написано выше.
Автор: StanFreeWare
Дата сообщения: 20.12.2009 17:07
Уважаемые коллеги,
если у кого-нибудь есть установленный 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, истории становления российского интернета. Сделано для людей.