Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/40: Рейтинг темы: голосов - 40, средняя оценка - 4.80
25 / 16 / 1
Регистрация: 20.12.2012
Сообщений: 122
1

Как работать с буфером обмена

26.12.2012, 17:22. Показов 7180. Ответов 12
Метки нет (Все метки)

Помогите пожалуйста,не пойму с чего начать.

Есть форма,на ней два button один на запись,другой на чтение. Два textBoxa,в один записываем,в другой читаем. Создал массив фиксированного размера.
Суть вопроса - нужно чтобы мой фиксированный буфер обмена блокировал поток запросивший выполнение операции:

-Читать записи,если в буфере нет требуемого кол-во записей
-Писать в буфер,если свободное пространство буфера меньше запрошенного кол-ва записей

Добавлено через 6 минут
Создал button на запись из текстБокса в массив
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 private void button1_Click(object sender, EventArgs e)
        {
            int x = 4; int y = 4;
            int[,] a = new int[x, y];
            string[] rtb = textBox1.Text.Replace("\r\n", " ").Split(' ');
            int pos = 0;
            for (int i = 0; i < x; i++)
                for (int j = 0; j < y; j++)
                {
                    a[i, j] = Convert.ToInt32(rtb[pos]);
                    pos++;
                }
        }
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2012, 17:22
Ответы с готовыми решениями:

Работа с буфером обмена
Добрый вечер. Непонятные вещи творятся с Clipboard, Создаю файл, копирую его в Нное место (Рабочий...

Исключение при работе с буфером обмена
Задача: при нажатии на кнопку, в буфер обмена копируется текст. Я делаю это таким образом: ...

Все таки подружить кириллицу с буфером обмена
Всем привет! Распространенная проблема, но что-то не могу найти решение. Есть DataGridView в ней...

COM-порт, работа с двумя формами и одним буфером обмена
Доброго времени суток. Обращаюсь с вопросом, который повторяли, наверно, сотню и один раз. Но...

12
1055 / 862 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
26.12.2012, 17:33 2
C#
1
2
3
4
5
6
7
8
private void button1_Click(object sender, EventArgs e)
        {
            Clipboard.Clear(); Clipboard.SetText(textbox1.Text);
        }
private void button2_Click(object sender, EventArgs e)
        {
            textbox2.Text =  Clipboard.GetText();
        }
1
25 / 16 / 1
Регистрация: 20.12.2012
Сообщений: 122
26.12.2012, 17:42  [ТС] 3
Спасибо,только начал читать про класс ClipBoard!

Ещё вопрос,а можно мне как-то сделать фиксированный размер на запись?
0
1055 / 862 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
26.12.2012, 17:51 4
перед вставкой в буфер проверьте размер, если он отличачется от необходимого киньте MessageBox с сообщением ошибки и не вставляйте ничего в буфер.
1
25 / 16 / 1
Регистрация: 20.12.2012
Сообщений: 122
26.12.2012, 17:54  [ТС] 5
Спасибо! Извините,я в этих делах новичок,а как проверить размер? MessageBox я понимаю как вставить
0
1055 / 862 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
26.12.2012, 18:07 6
textbox1.Text.Legth - количество символов в тексте в textbox1
1
25 / 16 / 1
Регистрация: 20.12.2012
Сообщений: 122
26.12.2012, 18:49  [ТС] 7
Learx,вы извините,я новичок
Что-то я не пойму,мне постоянно выскакивает сообщение "Переполнение буфера"
И ещё как мне сделать,чтобы при клике на button1 сразу отправляло текст в другой текст бокс для чтения?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 private void button1_Click(object sender, EventArgs e)
        {  if (textBox1.Text.Length > 10)
            {
                Clipboard.Clear(); Clipboard.SetText(textBox1.Text);
                MessageBox.Show("Данные записаны");
                
            }
            else
            {
                MessageBox.Show("Переполнение буфера");
            }
               
        
            
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            textBox2.Text = Clipboard.GetText();
        }
0
1055 / 862 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
26.12.2012, 19:08 8
Переполнение буфера - будет выскакивать, если ваш текст коротче 10 символов.

Если просто хотите скопировать значение из textBox1 в textBox2, то достаточно:
textBox2.Text=textBox1.Text; без использования буфера обмена.
1
25 / 16 / 1
Регистрация: 20.12.2012
Сообщений: 122
26.12.2012, 19:18  [ТС] 9
Learx, Спасибо большое!(Сухое чтение - ничего не даёт,пробую делать руками)

Можно ещё один вопрос, а как сделать это всё с потоками,уть вопроса - нужно чтобы мой фиксированный буфер обмена блокировал поток запросивший выполнение операции:

-Читать записи,если в буфере нет требуемого кол-во записей
-Писать в буфер,если свободное пространство буфера меньше запрошенного кол-ва записей
0
1055 / 862 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
26.12.2012, 19:39 10
Программа выполняется в одном потоке по умолчанию. и если вы заблокируете основной поток, то программа просто зависнет. Если выводить на форму и получать данные должен другой поток, то это вопрос обмена данными между потоками и должен быть задан в теме многопоточность.
1
25 / 16 / 1
Регистрация: 20.12.2012
Сообщений: 122
26.12.2012, 20:08  [ТС] 11
Спасибо! Я понял!

Добавлено через 15 минут
Удалите тему.Заранее спасибо!
0
Почетный модератор
21319 / 9054 / 1082
Регистрация: 11.04.2010
Сообщений: 11,014
26.12.2012, 20:18 12
NoBODY18, темы не удаляются : https://www.cyberforum.ru/announcement.php?a=3
1
25 / 16 / 1
Регистрация: 20.12.2012
Сообщений: 122
26.12.2012, 20:33  [ТС] 13
Помогите с этим,нужно чтобы мой фиксированный буфер обмена блокировал поток запросивший выполнение операции:
-Читать записи,если в буфере нет требуемого кол-во записей
-Писать в буфер,если свободное пространство буфера меньше запрошенного кол-ва записей
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
private void button1_Click(object sender, EventArgs e)
        {
 
 
 
            if (textBox1.Text.Length > 10)
            {
                Thread myThread = new Thread(); //Не понимаю что здесь писать в ()
 
                myThread.Start();
                Clipboard.Clear(); Clipboard.SetText(textBox1.Text);
                MessageBox.Show("Данные записаны");
                
            }
            else
            {
                MessageBox.Show("Переполнение буфера");
                Thread.Sleep(0);
            }
               
        
            
        }
        
 
        private void button2_Click(object sender, EventArgs e)
        {
            
            textBox2.Text = Clipboard.GetText();
        }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2012, 20:33

Операции с буфером обмена
Доброго времени суток,форумчане!Назрел один вопрос у меня по поводу буфера обмена. Цель:Если в...

Работа с буфером обмена. (Опен офис, Компас).
Добрый день. Идея следующая. Выделяю область в опенофисе калькулятор (аналог Экселя). Копирую в...

Управление буфером обмена через другой поток
Надо удалять, добавлять, изменять буфер обмена через фоновой поток. //При стандартном...

Позволяет ли API 1С работать с системным буфером обмена?
Позволяет ли API 1С работать с системным буфером обмена ? (для чертовски умных желательно чтобы в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru