1

Тема: Програма на С#

Друзі, япоставив перед собою задачу написати простеньку погаму на С# (WPF), але  С# я не знаю.
З чого почати вивчення? з консольної програми чи можна зразу з WPF? Порадьте будь ласка якісь книги чи сайти в яких гарно пояснюється)

2

Re: Програма на С#

Ваша завзятість не перестає мене дивувати.

Почніть з консолі, розберіться там з особливостями мови.

Подякували: Faraon, leofun012

3

Re: Програма на С#

Створив проект впф, в якому є головна сторінка "MainWindow.xaml" та сторінка на яку потрібно здійснити перехід "Page1.xaml". На гоовній сторінці створив кнопку на яку повішав подію для переходу на іншу сторінку

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            this.NavigationService.Navigate(new Uri("Page1.xaml", UriKind.Relative));
        }

але чомусь підкреслює NavigationService і видає помилку "Ошибка    1    "Grand_Tomb.MainWindow" не содержит определение для "NavigationService". Не удалось найти метод  расширения "NavigationService", принимающий первый аргумент типа "Grand_Tomb.MainWindow"  (пропущена директива using или ссылка на сборку?)    D:\с#\WPF\Grand Tomb\Grand Tomb\MainWindow.xaml.cs    30    18    Grand Tomb
"
підкажіть будь ласка як її виправити)

4

Re: Програма на С#

Ти створив windows в нього немає navigation service але він є у page.

тут є по тому багато інфи яку я не читав бо нафіг воно мені не потрібно

Подякували: Faraon1

5 Востаннє редагувалося Faraon (05.08.2015 01:12:47)

Re: Програма на С#

delete

6 Востаннє редагувалося Faraon (05.08.2015 01:13:20)

Re: Програма на С#

вибачаюся, мені потрібно було реалізувати перехід з одного вікна в інше. Тільки щойно до мене дійшло що вікно і сторінка дві різні речі, це просто піпец)
Проблему вирішив викоростовуючи Frame, в проекті постворював сторінки в яких подобавляв потрібні елемени управління, а потім в  MainWandow.xaml добавив обєкт Frame

<Frame x:Name="Frame" Source="Page1.xaml" />

дякую truesupport за те що дали зрозуміти, вікно це не сторінка)

7

Re: Програма на С#

Faraon написав:

Друзі, япоставив перед собою задачу написати простеньку погаму на С# (WPF), але  С# я не знаю.
З чого почати вивчення? з консольної програми чи можна зразу з WPF? Порадьте будь ласка якісь книги чи сайти в яких гарно пояснюється)

google-> windows presentation foundation unleashed pdf знайдіть десь і прочитайте. Поки не зрозумієте звідки ноги ростуть, не треба клацати, тільки час змарнуєте. Хоча, відома річ, тиждень в лабораторії може зберегти дві години в бібліотеці...

Подякували: quez, Faraon, leofun013

8

Re: Програма на С#

через впф можна створити папку?

9

Re: Програма на С#

using System.IO
Directory.CreateDirectory("d:\\testFolder");

*OK*

10

Re: Програма на С#

Створив функцію

        public void openDialogFile (string type)
        {
            OpenFileDialog file = new OpenFileDialog();
            file.Multiselect = false;
            file.Filter = type;
            //type = Text files (*.txt)|*.txt|All files (*.*)|*.*
            file.ShowDialog();
        }

все працює, але якщо я зміню void на string то вибиває помилку
Ошибка    1    "Grand_Tomb.Page3.openDialogFile(string)": не все ветви кода возвращают значение    D:\с#\WPF\Grand Tomb\Grand Tomb\Monument_1.xaml.cs    35    23    Grand Tomb
чому?
весь код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO;//потрібно підключати для створення папки чи файла
using System.Windows.Forms;//потрібно додати силку на збірку

namespace Grand_Tomb
{
    /// <summary>
    /// Логика взаимодействия для Page3.xaml
    /// </summary>
    public partial class Page3 : Page
    {
        public Page3()
        {
            InitializeComponent();
        }

        private void ProgressBar_ValueChanged_1(object sender, RoutedPropertyChangedEventArgs<double> e)
        {

        }

        public string openDialogFile (string type)
        {
            OpenFileDialog file = new OpenFileDialog();
            file.Multiselect = false;
            file.Filter = type;
            //type = Text files (*.txt)|*.txt|All files (*.*)|*.*
            file.ShowDialog();
        }

        private void next(object sender, RoutedEventArgs e)
        {
            //считуємо число замовлень
            string sizeString;
            int sizeInt;
            FileStream f = new FileStream("d:\\customers\\The number of buyers.txt", FileMode.Open);//відкриваємо файл
            StreamReader s = new StreamReader(f, Encoding.UTF8);
            sizeString = s.ReadLine();//зчитуємо строку
            sizeInt = int.Parse(sizeString);//конвертуємо string в int
            f.Close();//закриваємо потік

            //File.CreateText("d:\\customers\\" + (sizeInt + 1) + "\\Надгробний пам'ятник.txt"); //створюємo файл
            File.AppendAllText(@"d:\\customers\\" + (sizeInt + 1) + "\\Надгробний пам'ятник.docx", otherText.Text + "\n");

            this.NavigationService.Navigate(new Uri("Coffin_1.xaml", UriKind.Relative));
        }

        private void photoClick(object sender, RoutedEventArgs e)
        {
            openDialogFile("Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All files (*.*)|*.*");
        }

        private void TextBox_TextChanged_1(object sender, TextChangedEventArgs e)
        {

        }

        private void ago(object sender, RoutedEventArgs e)
        {
            this.NavigationService.Navigate(new Uri("TypeMonument.xaml", UriKind.Relative));
        }

        private void showMonument(object sender, RoutedEventArgs e)
        {
            this.NavigationService.Navigate(new Uri("ShowMonument.xaml", UriKind.Relative));
        }


        private void monumentClick(object sender, RoutedEventArgs e)
        {
            openDialogFile("Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All files (*.*)|*.*");
        }

        private void typeGraniteClick(object sender, RoutedEventArgs e)
        {
            openDialogFile("Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All files (*.*)|*.*");
        }

        private void designElementsClick(object sender, RoutedEventArgs e)
        {
            openDialogFile("Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All files (*.*)|*.*");
        }
    }
}

11

Re: Програма на С#

як розуміти цю помилку?

12

Re: Програма на С#

Про return чули?

Подякували: Faraon, leofun012

13

Re: Програма на С#

quez написав:

Про return чули?

блін... стільки часу потратив і не замітив цього) дякую.

14

Re: Програма на С#

Faraon написав:
quez написав:

Про return чули?

блін... стільки часу потратив і не замітив цього) дякую.

А на що ви його потратили? Явно не на читання тексту помилки.

15

Re: Програма на С#

quez написав:
Faraon написав:
quez написав:

Про return чули?

блін... стільки часу потратив і не замітив цього) дякую.

А на що ви його потратили? Явно не на читання тексту помилки.

Помилку читав, але вона мені щось не дуже зрозуміла... навіть тепер коли я знаю в чому проблема

16

Re: Програма на С#

Оператор if ще зветься оператором розгалуження (рос. ветвления), оскільки створює різні шляхи - "гілки" коду. Тепер ясно?

17

Re: Програма на С#

koala написав:

Оператор if ще зветься оператором розгалуження (рос. ветвления), оскільки створює різні шляхи - "гілки" коду. Тепер ясно?

а при чому тут if?

18

Re: Програма на С#

Faraon написав:
koala написав:

Оператор if ще зветься оператором розгалуження (рос. ветвления), оскільки створює різні шляхи - "гілки" коду. Тепер ясно?

а при чому тут if?

До того, що зазвичай ця помилка виникає саме в коді, де багато if - з деяких гілок вихід зробили, з деяких ні. Програмісти, що описували цю помилку, просто не подумали, що хтось примудриться забути return в лінійному коді.

Подякували: Faraon, leofun012

19 Востаннє редагувалося Faraon (20.08.2015 23:07:42)

Re: Програма на С#

як в текстовому файлі створити таблицю 2х2 (на всю сторінку для друку)?
Здається для того щоб створити таблицю і зберігти її, потрібно текстовий документ в форматі .docx, але ось в чому проблема... в цей формат простий текст не хоче зберігатися, при відкритті вискакує повідомлення що файл пошкоджено.

20

Re: Програма на С#

*WALL*
Зазвичай рекомендується перед тим, як вивчати програмування, засвоїти комп'ютер на рівні досвідченого користувача :)
*WALL*  *WALL*  *WALL*