|
hi,
i am using DrawString method to display text in my Smartphone application when form is painted. i have added a method to the Paint event handler for this:
this.Paint += new PaintEventHandler(DrawMainPage);
when i get new data i have to repaint the form to inorder to show new data.
but when i call myform.invalidate() from different form then i gives me error that i have to invoke this method from the same thread.
i tried do upate my code accordingly (http://www.codeproject.com/csharp/begininvoke.asp)
but i get the same error.
will appreciate help.
regards,
rnv
|
|
|
|
|
Try making sure that you're Main function is marked with a STAThread attribute. If you're not using any multithreading that it
Ed
|
|
|
|
|
i would like to know how to read an image with c#
if u can give me a code in witch there are an example
developpement
|
|
|
|
|
Do you mean this?
Divyang Mithaiwala
System Engineer & Software Developer
|
|
|
|
|
You can use this code:
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)<br />
{<br />
Graphisc g = e.Graphisc;<br />
Bitmap bmp = new Bitmap("your_image.jpg");<br />
g.DrawImage(bmp, 0, 0);<br />
}
-- modified at 9:27 Thursday 16th March, 2006
|
|
|
|
|
Except that it will leak resources. The Bitmap reading code should ideally read to a member variable ( why do it every time ? ), or at a minimum, should be in a 'using' block.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
I have a Deployment project which includes a Customer Information Dialog box. I want to use the information entered in my Custom Action class AfterInstall. Does anyone know how I can do this?
|
|
|
|
|
Can any one guide me how to launch the installed application immediatley after the Finished screen button clicked. Once the user clicks the finished screen "Close" button, i need to launch the installed application. I tried with installer class. Sample code is given below.I have created a class library and within that an installer class. I tried with the afterInstall event, but its not working.
namespace ClassLibrary1
{
[RunInstaller(true)]
public partial class Installer1 : Installer
{
public event InstallEventHandler AfterInstall;
public Installer1()
{
InitializeComponent();
AfterInstall += new InstallEventHandler(AfterInstallEventHandler);
}
private void AfterInstallEventHandler(object sender, InstallEventArgs e)
{
Process.Start(@"C:\Program Files\Surisoft\SampleSetup\SampleApplication.exe", "/q");
}
}
}
Regards
Mukilan.P.S
|
|
|
|
|
i have two form: Form1, Form2 and Form3. Form1 is MDI Parent form. i'v made Form2 to open when one menu is clicked from Form1. Now Form2 has one button which should show Form3, and i'v done the code this way:
Form3 frmF3 = new Form3();<br />
Form1 fm1 = new Form1();<br />
<br />
frmF3.MdiParent = fm1;<br />
frmF3.Show();
but clicking the button is performing nothing. how can i do that?
|
|
|
|
|
Dear,
Try to structure your code by doing the following:
-In form3 add the following Function:
public void Create(Form ParentWnd)
{
MdiParent = ParentWnd; Show();
}
- Now from Form2 do the follwing from a function of course:
Form3 form3 = new Form3();
Form ParentForm = this.MdiParent;
form3.Create(ParentForm);
I've been programming since year 1999, graduated from Univeristy Paris 2 France, fluent in C,C++,VC++,Web programming (XML,HTML,php etc..),.NET frameworks,C# and ASP.NET,SQL server, Mastering VC++ .NET and SQL server,data structure and database design
|
|
|
|
|
thanx for ur help
i did this way
Form3 frmF3 = new Form3();<br />
<br />
frmF3.MdiParent = this.MdiParent;<br />
frmF3.Show();
it worked. thanx again.
|
|
|
|
|
Hi there
can someone please help me?
I want to select a row from form1 and then open another form (form2) which shows the same row but with some more fields...
so..
form 1. datagrid about 4 collums from the database table. then dubbel click on it
form 2. a couple of textfields.. (about 10) which shows all the records in the row.
i use C# winforms.
i've tried a lot of thinks but it just won't work....
|
|
|
|
|
Moddify the constructor of form2 so that it takes the ID of the row and then display the information you need.
On form1 make a event hanlder that will respond to the doubleclick on the datagrid and then make a new form in that event handler that will pass the id of the row to the form2.
Q:What does the derived class in C# tell to it's parent?
A:All your base are belong to us!
|
|
|
|
|
but how?
i actualy got al the coding.. but it just don't work.. and i really dont know why.
public void dataGrid_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)<br />
{<br />
int rowIndex = dataGrid1.CurrentRowIndex;<br />
if (CustomRow != null)<br />
{<br />
CustomRow(this, new CustomRowEventArgs(barry11,dataGrid1,rowIndex));<br />
}<br />
<br />
}
public class CustomRowEventArgs : EventArgs<br />
{<br />
<br />
public Barry1 DaSet;<br />
DataGrid grid;<br />
int row;<br />
<br />
public CustomRowEventArgs(Barry1 DSet,DataGrid Grid,int Row)<br />
{<br />
DaSet = DSet;<br />
grid = Grid;<br />
row = Row;<br />
<br />
}<br />
public Barry1 DSet<br />
{<br />
get { return DaSet; }<br />
}<br />
public DataGrid Grid<br />
{<br />
get { return grid; }<br />
}<br />
public int Row<br />
{<br />
get { return row; }<br />
}
that DaSet.. should be barry11 (my dataset) DaSet was kinne like a test or something..
or what variable or class or something should i put there..
public virtual void customHandler_CustomRow(object sender, CustomRowEventArgs e)<br />
{<br />
Barry1 DaSet = e.DaSet;<br />
DataGrid dataGrid1 = e.Grid;<br />
int row = e.Row;<br />
<br />
textBox.Text = dataGrid1[e.Row,0].ToString();
this textbox stands on the same form so i could test it and see it quick if it works or not..
but it doesn't...
|
|
|
|
|
Quick'n dirty...
In the main form, when a row in the datagrid is double clicked:
<br />
private void dgInfo_DoubleClick(object sender, System.EventArgs e)<br />
{ <br />
Form2 frm=new Form2(ds, dgInfo.CurrentRowIndex);<br />
frm.ShowDialog();<br />
}<br />
In the constructor of Form2:
<br />
public Form2(DataSet ds, int index):this()<br />
{<br />
textBox1.Text=ds.Tables[0].Rows[index][0].ToString();<br />
textBox2.Text=ds.Tables[0].Rows[index][1].ToString();<br />
textBox3.Text=ds.Tables[0].Rows[index][2].ToString();<br />
}<br />
Helpful perhaps...
|
|
|
|
|
If I can help you, sure.
What do you want to know?
|
|
|
|
|
eh first of all the datagrid is on my form.
the and filled with data from my database.
my data set named "barry11"
which is the correct code to select a row from this grid.
second.
which code do i need te read the first field (firsname) into a textbox on the same form.
if that works i'm already pretty happy. to..
i was thinking.
can't I put the selectet row into a parameter and give this one to my second form. where my select query will be "SELECT * FROM BARRY WHERE FIRSTNAME == PARAM1:" Or something like that. just a theorie that i was thinking of.
-- modified at 10:28 Thursday 16th March, 2006
|
|
|
|
|
Rmokkenstorm wrote: my data set named "barry11"
which is the correct code to select a row from this grid.
First, find the index of the selected row in the datagrid by means of dataGridName.CurrentRowIndex. This rowindex corresponds to the index of the underlying dataset.
Rmokkenstorm wrote: second.
which code do i need te read the first field (firsname) into a textbox on the same form.
if that works i'm already pretty happy. to..
textBox2.Text=ds.Tables[0].Rows[index]["firstname"].ToString();
Work with the underlying dataset (ds above) instead of the datagrid.
Rmokkenstorm wrote: i was thinking.
can't I put the selectet row into a parameter and give this one to my second form. where my select query will be "SELECT * FROM BARRY WHERE FIRSTNAME == PARAM1:" Or something like that. just a theorie that i was thinking of.
Sure...
HTH
|
|
|
|
|
Rows[index] ? where does that stand for?
It does not exict in the clas or name space he says
and if i use Rows[row] it works.. but.. i can't see the selected row:S..
my script now
public static event CustomRowHandler CustomRow;
-----------------------------------------------------------------------
public virtual void customHandler_CustomRow(object sender, CustomRowEventArgs e)<br />
{<br />
Barry1 DSet = e.DSet;<br />
DataGrid dataGrid = e.Grid;<br />
int row = e.Row;<br />
<br />
textBox2.Text=barry11.Tables[0].Rows [row]["firstname"].ToString();
-------------------------------------------------------------------------------
public void dataGrid_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)<br />
{<br />
if (CustomRow != null)<br />
{<br />
CustomRow(this, new CustomRowEventArgs(barry11,dataGrid,dataGrid.CurrentRowIndex));<br />
}<br />
<br />
}
-------------------------------------------------------------------------------
public class CustomRowEventArgs : EventArgs<br />
{<br />
<br />
Barry1 dataSet;<br />
DataGrid grid;<br />
int row;<br />
<br />
public CustomRowEventArgs(Barry1 DSet,DataGrid Grid,int Row)<br />
{<br />
dataSet = DSet;<br />
grid = Grid;<br />
row = Row;<br />
<br />
}<br />
public Barry1 DSet<br />
{<br />
get { return dataSet; }<br />
}<br />
public DataGrid Grid<br />
{<br />
get { return grid; }<br />
}<br />
public int Row<br />
{<br />
get { return row; }<br />
}<br />
<br />
}
--------------------------------------------------------------------
I really don't get it...
-- modified at 4:25 Friday 17th March, 2006
|
|
|
|
|
Rmokkenstorm wrote: Rows[index] ? where does that stand for?
It referred to my previous example.
But I got your code executing on my computer
I don't know if you forgot to provide all of your code. But I added a delegate to support the event:
public delegate void CustomRowHandler(object sender, CustomRowEventArgs e);
But more important, I also added the following code snippet to the constructor of the class. In my case, in the constructor of the main form class.
CustomRow+=new CustomRowHandler(customHandler_CustomRow);
You have to associate the delegate to the event.
Then it worked, and the textbox was filled with data.
|
|
|
|
|
i assume you mean here:
InitializeComponent();<br />
barryOracleDataAdapter1.Fill(barry11.Barry);<br />
CustomRow+=new CustomRowHandler(customHandler_CustomRow);<br />
<br />
that doesn't work .
the public delegate void was already in my code i forgot to send it along.
|
|
|
|
|
Que!
Yes, that is the correct place...
Strange... I guess it doesn't matter if you put the CustomRow+=... directly after InitializeComponent().
By the way, what kind of construct is the barry-thing? Cause I changed every occurance of barry1 to the DataSet type.
And the textbox of mine is placed in the same form as the datagrid.
-- modified at 8:07 Friday 17th March, 2006
Also, I moved the code in datagrid_MouseUp() to an event handler triggering on a doubleclick of the grid (as in my first example), that is datagrid_DoubleClick.
|
|
|
|
|
if i want to put them into a new form he comes up whit this error.
No overload for method 'Form2' takes '3' arguments
tis is my code.
public void dataGrid_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)<br />
{ <br />
Form2 frm = new Form2(barry11, dataGrid, dataGrid.CurrentRowIndex);<br />
<br />
frm.Show();<br />
<br />
}<br />
|
|
|
|
|
Check the constructor of Form2; take a look at my first post where I had the quick'n dirty example.
-- modified at 2:57 Monday 20th March, 2006
Now, I see that my example just had two (2) parameters in the constructor. You need three (3).
|
|
|
|
|
i used yours.. but.. it doesn't work .
on my form1 i use this.
<br />
public void dataGrid_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)<br />
{<br />
if (CustomRow != null)<br />
{<br />
CustomRow(this, new CustomRowEventArgs(barry11,dataGrid,dataGrid.CurrentRowIndex));<br />
DataForm1 frm = new DataForm1();<br />
frm.Show();<br />
}<br />
}<br />
it's not very nice but I just want it to work.
and on my dataForm1.
<br />
InitializeComponent();<br />
Form1.CustomRow += new<br />
WindowsApplication30.CustomRowHandler(customHandler_CustomRow);<br />
<br />
<br />
public virtual void customHandler_CustomRow(object sender, WindowsApplication30.CustomRowEventArgs e)<br />
{<br />
Barry1 DSet = e.DSet;<br />
DataGrid dataGrid = e.Grid;<br />
int row = e.Row;<br />
<br />
<br />
editFIRSTNAME.Text = e.DSet.Tables[0].Rows[e.Row]["Firstname"].ToString();<br />
}<br />
i probleby forgot something very stupid just like last time.. but what.
-- modified at 4:29 Monday 20th March, 2006
DataForm1 frm = new DataForm1(barry11, dataGrid.CurrentRowIndex);
his error.. is that he wants 2 arguments...
if i count.. there are 2...
|
|
|
|