|
This is cool i helped me too. Because i have about 10 methods to load on details on Form load
example
ReturnPersonalDetails
ReturnEducationalDetails
ReturnProfileDetails
ReturnWordDetails
Thanks again
|
|
|
|
|
I don't know what this is for, but it could be that this could be better designed - for example, having separate classes or object instances for operations on each type of table. Then you could say:
agencyDataSource.ProcessTable();
authorityDataSource.ProcessTable();
In either case, you can have a dictionary to store the methods or objects by name:
Dictionary<string, MyDataSourceObject> tableObjs = new Dictionary<string, MyDataSourceObject>();
...
tableObjs["Agency"]=agencyDataSource;
tableObjs["Authority"]=authorityDataSource;
...
tableObjs["Agency"].ProcessTable();
tableObjs["Authority"].ProcessTable();
delegate void EmptyDelegate();
Dictionary<string, EmptyDelegate> methods = new Dictionary<string, EmptyDelegate>();
...
methods["Agency"]=ProcessAgencyDataTable;
methods["Authority"]=ProcessAuthorityDataTable;
...
methods["Agency"]();
methods["Authority"]();
Or you could do it using Reflection like Brady mentioned but it's slower as far as perf.
--Justin
Microsoft MVP, C#
|
|
|
|
|
Thanks Justin,
When looking for the performance, your suggestion would serve better.
I will have to make a trade-off which way best suits for my Application.
Anyway, Thank you once again for your valuable suggestion.
Regards,
Subrahmanyam K
|
|
|
|
|
|
Hi,
I am trying to print a crytal report using my application programaticaly. I want the user to select the printer and number of copies etc from the print dialog box.
please tell me a way to do this i tried with the following method Where i am giving the Num of pages in the coding and the defualt printer prints the report.
But that is not how i want.
Here is my coding
RepStockSalesCatByLoc repstkslscat = new RepStockSalesCatByLoc();
repstkslscat.SetDataSource(dsreportDiv);
repstkslscat.PrintToPrinter(1, false, 1, 2);
Regards
Ruwandi
rkherath
|
|
|
|
|
Try using ReportViewier to print and use
ReportDocument rptDoc = new ReportDocument();
rptDoc.Load(Server.MapPath("ReportName.rpt"));
rptDoc.SetDataSource(yourDataSet);
CrystalReportViewer1.ReportSource = rptDoc;
the ReportViewer has a print button option, set it to true
CrystalReportViewer1.ShowPrintButton = true;
This usually selects all the printers added on that machine
i hope this helps
|
|
|
|
|
Hi,
Thax, but i have to print 112 reports at once using a foreach. This report is a stock and sales for 112 outlets of a supermarket. user wanna print all the reports at once. but he need to select the printer.
any idea!
regards
Ruwandi
rkherath
|
|
|
|
|
There is a property, PrinterName or some such, that you can set the printer name to.
|
|
|
|
|
I am writing a C# console program that needs to read a file from the same directory as the application. I can't use the current directory as that is not the same as the application directory.
Normally I would use Application.ExecutablePath, but console apps don't derive from Application.
Ideas?
|
|
|
|
|
The current directory is NOT the application directory.
If I open a command prompt, change to C:\Windows and run the application C:\MyProg.exe your example will not work. The file 1.log is in C:\, but the current directory is C:\Windows so I will get a file not found exception.
|
|
|
|
|
try this.
static void Main(string[] args)
{
string loc = Assembly.GetCallingAssembly().Location;
string path = Path.GetDirectoryName(loc);
Console.WriteLine(path);
string[] bla = File.ReadAllLines(path + "\\1.log");
foreach (string var in bla)
{
Console.WriteLine(var);
}
}
|
|
|
|
|
System.Reflection.Assembly execAsm = System.Reflection.Assembly.GetExecutingAssembly();
string asmPath = execAsm.CodeBase.Replace("file:///", "").Replace('/', '\\');
MessageBox.Show(asmPath);
|
|
|
|
|
I'd just got to that point, but I'm using :
System.Reflection.Assembly.GetExecutingAssembly().Location
Thanks.
|
|
|
|
|
Application.ExecutablePath works anyway, try it before you discard it.
"We learn more from our mistakes than we do from getting it right the first time."
|
|
|
|
|
That's easy, just use AppDomain.CurrentDomain.BaseDirectory to get the running directory and add to it your console application name and you have a path just like Application.ExecutablePath.
http://stefanprodan.wordpress.com
|
|
|
|
|
Application.ExecutablePath or Environment.CurrentDirectory for your need
Hope this helps...
|
|
|
|
|
hi
i am trying to chage the text of a label,
but the thing is that its not fast
i am setting the text before some function calls but the text is changed after all the functions.
Do you know any effective method to quickly change the text of a label
My small attempt...
|
|
|
|
|
Can you post the code snippet? Also run the application in debug mode to see what happens
|
|
|
|
|
like
label1.Text = " method1";
method1();
label1.Text = "method2";
method2();
label1.Text = "method3";
method3();
this will disply method3 after all function call we will not get the other text
i maen no refreshing
My small attempt...
|
|
|
|
|
This because it executes method1() and method2() quickly and you can't see the change. Write something like this
label1.Text = " method1";
System.Threading.Thread.Sleep(5000);
method1();
label1.Text = "method2";
System.Threading.Thread.Sleep(5000);
method2();
label1.Text = "method3";
method3();
and you will see the process
|
|
|
|
|
You can check you sample it will not work,i mean will not give the textchange
i had tried this earlier...
actually the thing is that my methods itself taking more time to execute.
You know anyother methods
My small attempt...
|
|
|
|
|
Search for the Asynchronous processing that will help you
Thanks and Regards
Sandeep
If you want something you never had,
do something you have never done!
|
|
|
|
|
Can you just expalin, what you mean by that?
My small attempt...
|
|
|
|
|
That won't work, it will just delay the code.
You need to tell Windows to redraw the label with :
label1.Text = " method1";
label1.Refresh();
method1();
label1.Text = "method2";
label1.Refresh();
method2();
label1.Text = "method3";
label1.Refresh();
method3()
From the help for Control.Refresh:
Forces the control to invalidate its client area and immediately redraw itself and any child controls.
|
|
|
|
|
This won't fix the problem. Sleeping the UI for 5 seconds, after each update of a label, will only hang his app unnecessarily. Application.DoEvents() is what is needed in his situation.
Dave Kreskowiak
Microsoft MVP
Visual Developer - Visual Basic 2006, 2007
|
|
|
|