wczytywanie pliku .doc w textBox

0

Hejka. Stawiam dopiero pierwsze kroki w Visual C# i jak się łatwo można spodziewać trafiłem na problem gdzie oprócz dodawania elementów do formy i zmiany ich parametrów trzeba napisać trochę kodu. Mam dwa projekty, w każdym inna forma. Chciałem jakoś ustawić całość tak, aby wciśnięcie przycisku na pierwszej formie uruchamiało drugą formę. Niestety nie wiem jak to zrobić ale wybrnąłem z tego wpisując w metodzie onClick podpatrzone
System.Diagnostics.Process.Start("form2.exe");
Efekt działania jest taki jak zamierzony ale niezbyt to chyba elegancko.
W każdym razie działa.
Teraz chciałbym aby wciśnięcie innego przycisku wczytywało plik .doc do textBox'a znajdującego się w tej samej formie co ów przycisk. Nie mam jednak zielonego pojęcia jak to zrobić. Podejrzewam tylko, że nie będzie to proste gdyż nie chodzi o standardowe .txt. Z drugiej strony co by trzeba zrobić żeby w tym textBoxie wyświetlał się plik .avi, albo żeby inny przycisk włączał i wyłączał muzykę?
Wiem że tego dużo, ale jakakolwiek pomoc, o ile zrozumiałbym objaśnienia
była by bardzo mile widziana.
Pozdrawiam
Yaro

0

Co do drugiej formy to:
To w jednym projekcie masz jedna forme np Form1, drugą dodajesz wybierając w "Solution Explorer" prawym klawiszem na nazwie projektu ADD->Add New Item i wybierasz Windows Form i dajesz jej nazwe np. Form2

W klasie formy Form1 dodajesz zmienna

Form2 druga_forma;
druga_forma=new Form();

Pozniej w zdarzeniu onClick

druga_forma.Show();

A do wyświetlania Tekstu bardziej proponowałbym kontrolke RichTextBox

A jeśli chodzi o pliki .avi zapoznaj sie z artykułem Media Player DirectShow na CodeGuru.pl

0

Próbowałem ale nie całkiem mi to działa.
Tak jak opisałeś w Solution Explorer kliknąłem prawym na tytuł
bierzącego projektu i wybrałem Add> Existing Item (gdyż chciałem
dodać tu drugą formę, która już jest utworzona w innym projekcie.
Zostałem zapytany czy chcę aby ta forma została skopiowana czy
żeby tylko został stworzony do niej link. Wybrałem kopiowanie no i
forma znalazła się w moim projekcie. Potem w klasie pierwszej formy
(tak przynajmniej mi się wydaje) po

public partial class MainForm
{
[STAThread]
public static void Main(string[] args)
{
i dalej
public MainForm()
{
InitializeComponent();
// tu dopisałem
Form Form1;
Form1=new Form();
//Form1 to nazwa tej drugiej formy
// pierwsza nazywa się MainForm
}
} // tu kończy się partial class MainForm

po czym mam

void Button1Click(object sender, System.EventArgs e)
{
Form1.Show();
}

Kompilacja jednak wyświetla błąd, który z pewnością jest dla ciebie oczywisty
bo nawet mi coś świta. Ten błąd to : Projekt.exe has more than one entry point
defined. Czyli jak się domyślam kompilator nie wiem która forma powinna wystartować pierwsza a może chodzi o to że mamy dwie metody Main()? No bo jedna jest w MainForm a druga w Form1...
Pozdrawiam
yAro

0
public partial class MainForm
        {
                [STAThread]
                public static void Main(string[] args)
                {
                       Application.Run(new MainForm());   //TEGO BRAKUJE
                 }

                private Form Form1;   //to ma byc poza konstruktorem

        public MainForm()
             {
                   InitializeComponent();
                   // tu dopisałem
                   
                   Form1=new Form();
                   //Form1 to nazwa tej drugiej formy
                   // pierwsza nazywa się MainForm
              }
}  // tu kończy się partial class MainForm

po czym mam

void Button1Click(object sender, System.EventArgs e)
                {
                        Form1.Show();
                }

teraz powinno działać a jak nie to wrzuc cały kod

0

Ten sam problem z more then one entry point

To jest kod MainForm.cs

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace Assignment
{

public partial class MainForm
{
	[STAThread]
	public static void Main(string[] args)
	{
		Application.EnableVisualStyles();
		Application.SetCompatibleTextRenderingDefault(false);
		Application.Run(new MainForm());
	}
	
	private Form Form1;
	public MainForm()
	{
	
		InitializeComponent();
                    Form1=new Form();
	}

	void Button14Click(object sender, System.EventArgs e)
	{
		Form1.Show();
	}
	
	void CheckBox1CheckedChanged(object sender, System.EventArgs e)
	{
	
	}
}

}

a tu początek kodu Form1:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace GoogleWS
{
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox txtSearch;
private System.Windows.Forms.Button btnSearch;
private System.Windows.Forms.TextBox txtKey;
private System.Windows.Forms.TextBox txtNum;
private System.Windows.Forms.ComboBox cmbPage;
private System.Windows.Forms.TextBox txtResult;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.CheckBox chkFilter;
private System.Windows.Forms.CheckBox chkSafeSearch;

	private System.ComponentModel.Container components = null;

	public Form1()
	{
		InitializeComponent();
	}


	protected override void Dispose( bool disposing )
	{
		if( disposing )
		{
			if (components != null) 
			{
				components.Dispose();
			}
		}
		base.Dispose( disposing );
	}

	private void InitializeComponent()
	{

tu jest jeszcze trochę kodu ale to nic co by mogło mieć
wpływ na pojawiający się błąd. Same przyciski i pola tekstowe
i doalej jest
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.BackColor = System.Drawing.Color.NavajoWhite;
this.ClientSize = new System.Drawing.Size(792, 571);
this.Controls.Add(this.chkSafeSearch);
this.Controls.Add(this.chkFilter);
this.Controls.Add(this.label4);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.txtResult);
this.Controls.Add(this.cmbPage);
this.Controls.Add(this.txtNum);
this.Controls.Add(this.txtKey);
this.Controls.Add(this.btnSearch);
this.Controls.Add(this.txtSearch);
this.MaximizeBox = false;
this.Name = "Form1";
this.Text = "Google Web Service";
this.ResumeLayout(false);
this.PerformLayout();
}

	[STAThread]
	static void Main() 
	{
		Application.Run(new Form1());
	}

Nie wiem czy to nie o tą końcówkę chodzi...

0

Jeszcze co do tematu odnośnie Media Playera na CodeGuru. Ściągnąłem WMP 10 SDK i jest tam faktycznie przykład kodu w C#. Niestety nie kompiluje się u mnie. pojawia się szereg nieml identycznych błędów różniących się tylko inną nazwą między apostrofem
The type or namespace 'AxWMPLib' could not be found (are you missing a using directive or an assembly reference?)(CS0246)
Czyli czegoś tu brakuje.

0

masz dwie funkcje main o to chodzi kompilatorowi usuń funkcje main dla Form1

i mozesz zmienic dla Form1 przestrzen namespace z GoogleWS na Assignment

a co do Playera z CodeGuru sciagnij sobie całe zródło bo w artykule nie ma wszystkich funkcji pokazanych źródło masz w załącznikach na dole strony :P

0

Rany z jednego problemu w drugi. Teraz Form1 przeskakuje kompilację ale pojawiają się inne problemy. Form1 używa Web Reference i teraz to nie chce dziłać [rotfl] i tak z deszczu pod rynnę...
Forma1 to forma z http://www.geekpedia.com/tutorial74_Google-Search-using-Web-Service.html
Można się wkurzyć. Nie wiem czy nie za wiele będzie prosić abyś w wolnej chwili rzucił na to okiem.
problem jest z:
Type or namespace 'google' coul not be found
Wielkie dzięki z dotychczasową pomoc.

0

Otwórz plik Reference.cs i zmien przestrzen nazw namespace na Assignment.google :)

w pliku gdzie jest Form1 tez przestrzen namespace daj Assignment :)

0

Już prawie jest dobrze :) Aplikacja się kompiluje tylko jest kolejny problem.
Wciśnięcie przycisku Google Search otwiera nową formę prawie tak jak powinno tyle, że całkiem nową pustą formę a nie Form1 odpowiedzialną za wyszukiwanie w google. Czy nie powinno być coś tu dopisane

public MainForm()
{
InitializeComponent();
Form1=new Form( jakieś parametry które by startowały właściwą Form1 ? );

0

Zrobiłem jeszcze coś takiego:
Po naciśnięciu button1 do RichTextBox w/g twojej porady wczytuje się teraz plik .doc który przekonwertowałem na .rtf. Całość jednak nie do końca odbywa się tak jak bym tego chciał. Muszę ręcznie wybrać ten pli a chciałbym żeby po naciśnięciu przycisku plik od razu ładował się w RichTexBox. Gdzie tu podać ścieżkę?

private void button1_Click(object sender, System.EventArgs e)
{
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
System.IO.StreamReader sr = new
System.IO.StreamReader(openFileDialog1.FileName);
MessageBox.Show(sr.ReadToEnd());
sr.Close();
richTextBox1.LoadFile(openFileDialog1.FileName,
RichTextBoxStreamType.RichText);
}
}
Tak mi świta, że FileDialog1 jest tu zbędne. Coś popróbuję bo zaczyna mi to przypominać Jave z którą miałem trochę do czynienia.

0

Ma być

Form1=new Form1();   //u ciebie jest new Form() czyli otwierasz pusta forme 
                                  // a jak dasz new Form1() to otworzy ci twoja forme Google

Dopisz tylko 1 po Form :)

0

Dopisanie jedynki nie pomogło. Dalej wyświetla nową pustą formę.

0

Co do wczytywania pliku dałem

private void button1_Click(object sender, System.EventArgs e)
{
richTextBox1.LoadFile("TUTORIAL1.rtf", RichTextBoxStreamType.RichText);

    }

i działa :)

0

A jestes peny ze masz wczesniej zadeklarowane

Form1 form1;    //ty masz chyba Form Form1
//a później 
form1=new Form1();

;P

0

Faktycznie było
public Form Form1;
poprawiłem na Form1 Form1;
ale dalej wyświetla pustą formę;
Czy można to jakoś wyśledzić krok po kroku aby widzieć co się dzieje?
Może wtedy złapałbym co jest nie tak.

A jeszcze apropos media playera w Codeguru, nie jestem pewien czy mówimy o tym samym wątku. Ja znalazłem temat na http://www.codeguru.pl/forum-posts-1498.aspx
ale tam nie ma żadnego linka do kodu na dole strony.

0

Wiesz wrzuc cały kod mi bedzie łatwiej wychwycic błąd , a jak chcesz sam znaleźć błąd to masz debuger ustaw kursor na konstruktorze i daj Run To Cursor ;)

0

W końcu znalazłem czemu to nie chodziło.
Kiedy były te problemy z "more than one entry point"
puściłem w komenarz metodę Main() w Form1
i nie tylko.
Teraz znalazłem, że komentarzem objąłem także
public Form1()
{
InitializeComponent();
}
:d ale gafa.
Sorki za zamieszanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1