|
The OP is using System.Timers.Timer which does not depend on the application running a message pump. But yeah, your idea is right, a thread will solve the problem.
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
Hey everybody.
sorry for the ignorence but I keep on having problems with this stuff.
I'm asking it in a general way, not specific to the app I'm building.
lets say I have 2 window forms, Main (form) and Modal (form).
the Main form has a memeber, lets say "m_strText" which is a public memeber.
now, from the Main form I'm opening the Modal form:
Modal dlgModal = new Modal();
dlgModal.ShowDialog();
at this moment of course the Modal form opens as a modal form.
the thing is that now I want to control the "m_strText" member from the Modal form.
as far as I know you do it like this:
Main dlgMain = new Main();
dlgMain.m_strText..... bla bla bla
but it won't work! because I created a new Main object, and I want to change the one that I am using...
how can I control my Main form without creating a new object?
Thanks!
p.s.
in my case it is a statusbar item that I want to change.
|
|
|
|
|
You just need to pass MainForm to the ModalForm, maybe as a constructor parameter. Like this
Modal dlgModal = new Modal(this);
dlgModal.ShowDialog();
Your Modal class will then look like this
class Modal : Form
{
Form parentForm;
public Modal(Form parentForm)
{
this.parentForm = parentForm;
}
}
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
Thank You!!!
|
|
|
|
|
Try using a third party in this one. A simple class that acts like a messenger between the two objects.
public delegate void MessagePostedEventHandler(object sender,string message);
public class Messenger {
public event MessagePostedEventHandler MessagePosted;
public void PostMessage(String message) {
if(MessagePosted != null) {
MessagePosted(this,message);
}
}
}
There are a few steps to be taken:
1. Create the messenger object
2. Register the MessagePosted event with the main object
3. Create the Modal object and pass the messenger object to the Modal object
4. Call PostMessage in the Messenger object in the Modal object
5. Handle the event in the main object (and change the statustext)
And viola, you have a perfectly working system that posts status messages
in the correct way without much more work
WM.
What about weapons of mass-construction?
|
|
|
|
|
i want reg exp for allow only Numeric value and only one decimal point
this is need for enter the price/rate..
ex- 1000.99,.09 (allow)
and not allowed for any other cherector ex- [ a32.%],100$,}
thanx in advace
uregent
|
|
|
|
|
Try this one:
^\d*\.\d{2}$
this should work fine for you.
/cadi
|
|
|
|
|
Hi you can check www.Regexlib.comfor any regex and you can use the Regulator[^] Expresso[^], Regulator is better as it uses one webservice to search regexlib.com, you will find a repository of regexes there, enjoy it !
Kareem Shaker
|
|
|
|
|
g'day folks,
i am stuck on a small problem relating to the usage of outlook dll in c#. The problem is that I am creating an email using the outlook dll and appending all files listed in a listview as hyperlinks. My copy of outlook displays my signature in every email it creates. Therefore all hyperlinks inserted in the email are inserted at the bottom of the email. What change do I need to make to my code so that it inserts the hyperlinks at the start of the body ?? I am hoping someone could point me in the right direction.
At the bottom is a snipet of my code. As you can see from the code that the line " oMailItem.Display(false);" is repeated twice. The first declaration is done because it displays the email itself and allows the signature in the email to be displayed. If this line is commented then you get an email with no signature but only hyperlinks. Which is not what i want.
I would really appreciate some assistance on this.
thanks
Vee
<code>
private void createEmail(object sender, System.EventArgs e)
{
string InternalPosting ="";
string PostingNotice ="";
string EmailBody="";
string sHtml="";
oApp = new Outlook.Application();
oNameSpace= oApp.GetNamespace("MAPI");
oNameSpace.Logon(null,null,false,true);
oOutlookFolder = oNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);
Outlook._MailItem oMailItem = (Outlook._MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
oMailItem.Display(false);
foreach (ListViewItem lvitem in listView3.Items)
{
int index = int.Parse(lvitem.Index.ToString()); string filename = EMAIL_ATTACH_LIST[index].ToString();
int lastindex = filename.LastIndexOf('\\');
string displayFilename = filename.Substring(lastindex+1, ((filename.Length) - (lastindex+1)));
sHtml = "<html>\n"+ "<head>\n"+ "</head>\n"+ "<body>\n"+
"<a href= "+"\""+InternalPosting+"\">"+displayFilename+"</a>\n"+
"</body>\n"+"<br>\n"+"</html>";
oMailItem.HTMLBody += sHtml;
}
oMailItem.Display(false);
}
</code>
|
|
|
|
|
ekynox wrote:
oMailItem.HTMLBody += sHtml;
Instead, try
oMailItem.HTMLBody = sHtml + oMailItem.HTMLBody;
Does that work?
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
hello Senthil
thank you thank you thank you so much. Yes it does work. I couldnt believe it was so simple ..
thanks
Vee
|
|
|
|
|
Hi All
Export to excel data from ultrawebgrid rows, Each data row contain one worksheet in excel sheet like as
row1 data contain sheet1
row2 data contain sheet2
row3 data contain sheet3
this opertaion getting at a time on pressing one button.
we have pressing one button ultrawebgrid rows data to export excel sheet, In excel sheet each worksheet contain one grid row deatails,
for example grid have 10 rows ,pressing any button,
In excel sheet 10 worksheets will occure and each worksheet contain 1 row data of grid pls send me a solution for this example
sunny
|
|
|
|
|
I have created nothing but a new C# Form1. I want to draw an X and Y axis that has an origin at the center of the form. I when the event 'fires' the code works as desired. However, when I resize the form the Y axis no longer is in the center of the Form1. Please help and thanks a lot...
//Problem is here ->
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen myPen = new Pen(Color.Black, 1);
Rectangle rect = new Rectangle();
g.DrawLine(myPen, rect.Size.Width/2, rect.Size.Height, rect.Width/2, rect.Size.Height);
}
//
|
|
|
|
|
Try this in your form's constructor:
<br />
SetStyle(ControlStyles.ResizeRedraw, true);<br />
Wout
www.woutware.com (DXF reading/creating/writing/viewing .NET component)
|
|
|
|
|
Try this :
this.ResizeRedraw = true;
override void Form1_Paint(object sender, Forms.PaintEventArgs e)
{
e.Graphics.DrawLine(Pens.Black,new rectangle());
}
void Form_Resize()
{
this.Invalidate();
}
|
|
|
|
|
i've changed in my application the standard cursor with my own.
the trouble came when i load it infact it is showed with 0,0 on the top left area of the arrow.
I want set that zone as the central of my own cursor, how can i do?
|
|
|
|
|
If you are referring to the HotSpot in the cursor, cursor editing programs let you specify where this is. VisualStudio.NET's editor I believe offers the feature as well (try right-clicking? - i'm not in front of my system at the moment).
|
|
|
|
|
What exactly are you doing? Calling Socket.Close() cancels all pending Asynchronous events on that socket. Which should include all BeginAccept's that you have called.
|
|
|
|
|
hey all
i have a c++ dll which was developed by someone else and in his documents it says
typedef int (_stdcall *pConnect) (void);
this function uses a trhead to send a connect message to the controller. a reply is sent via a WM_COPYPDATA message and then the thread is destroyed.
some more notes:
WM_COPYDATA, COPYDATASTRUCT record types
the message parameter of the WM_COPYDATA function is a standard windows message structure.
the LParam field of this structure should be cast as a pointer to a standard windows COPYDATASTRUCT.
The COPYDATASTRUCT fields are used as follows:
dwData (DWORD) used to represent the record type defined below
cbData (DWORD) used to represent record size
lpData (PVOID) used to point to the data
...
i can use PInvoke to use his functions but how do i set WM_COPYDATA, COPYDATASTRUCT in c# so i can get a reply from the controller?
any suggestions?
thanks
Kids don't try this at home!
|
|
|
|
|
Hi , C# fellows,
I have one dll and one windows form,
this dll send messages to windows form. the windows form has a message filter;
my problem is : when I use PostMessage() in dll, the message Filter can trap it; however, if I use sendMessage() , then doesnt work.
Can anyone explain Why???
|
|
|
|
|
Can you post the code for the message filter? PostMessage and SendMessage messages go to different queues, maybe the message filter is coded incorrectly?
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
OK,here is the source code::
// in the main function , do the following
MyMessageFilter msgFilter = new MyMessageFilter();
System.Windows.Forms.Application.AddMessageFilter(msgFilter);
// filter implementation
public class MyMessageFilter : System.Windows.Forms.IMessageFilter
{
public bool PreFilterMessage(ref System.Windows.Forms.Message m)
{
//custom message is 0x0800,...
if (m.Msg == 0x8000)
{ System.Windows.Forms.MessageBox.Show("Data ming" + m.Msg);
}
return false;
}
}
// and in dll , two way of send message
...
case 0x8000: PostMessage(...);break;
case 0x0801: SendMessage(...);break;
the problem is only the message by PostMessage can be trapped in the filter.
is that strange????
|
|
|
|
|
Does the DLL function that executes PostMessage/SendMessage run on the UI thread that is running the message pump for the HWND to which you send/post messages?
For eg, if your DLL function gets executed when the user clicks a button (on the HWND that you are sending/posting messages), then SendMessage will directly call the WndProc and won't go through the message pump. Which also means that the message filter won't work.
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
the Dll is in another thread,
its really confusing...
|
|
|
|
|
I know it is impossible to set for two forms at the same time the state of active, but it is possible set for both (or more) the title bar in "active state" (just the aspect).
I know it is possible overrinding some Windows message in WndProc.
Can you tell me how?
Please it is very important.
Thanks.
|
|
|
|