|
Just build the code in Release/Any CPU mode. It will create the exe and other required files in bin/release folder. You can use that.
Update (Thanks to Rob): Make sure you copy all the files in the folder to the client machine. Moreover, the application still may or may not work on the client computer. For instance, if you are using ODP.Net (Oracle Data Access provider), it must be installed on the client computer. Copying plain exe will not work here.
Make sure you have properly analyzed and considered most of the possibilities before you distribute the exe and associated files.
"The worst code you'll come across is code you wrote last year.", wizardzz[ ^]
modified on Friday, July 22, 2011 4:06 AM
|
|
|
|
|
As D@nish says but you need to copy all the files from the release bin folder and you also need to make sure the client PC has the correct version of .NET Framework. There is no guaranteed it will work.
"You get that on the big jobs."
|
|
|
|
|
Good point. I missed it in my reply. Updated it. Thanks.
"The worst code you'll come across is code you wrote last year.", wizardzz[ ^]
|
|
|
|
|
This doesn't directly answer your question, but we used to deploy applications at our company like that, then we finally switched our deployment to ClickOnce.
We have our internal software deployed on an XP Pro box, no bells and whistles, and it handles the deployment fine. You'll have to set up your IIS first, but if you do updates to alot of machines, it really is worth looking into.
Good luck!
|
|
|
|
|
Hello, I am half way through developing a graphing control. It includes the normal things like pan/zoom/multiple y axes. It is intended to be populated by reading data from a CSV file or something like that, but I can change that to whatever later if I need to - it's just a datasource.
The trouble I am having is with the amount of data. Lets say I have 131200 data records to plot, and only 1000 pixels to plot them in. Now I have two options:
1. Plot the record for each pixel.
2. Plot every record, using PointF's and letting windows sort it out.
The downsides are (respectively):
1. Data is missed, or stepped over. If we zoom in the data changes, this doesn't look good.
2. It takes ages drawing a 131200 points of data, and when zooming/panning it's slow. I have thought about plotting the data onto a offscreen bitmap so that panning is fast, but that doesn't help zooming.
Please don't suggest using transformations - they are slow when using large data sets.
A bitmap of the data size would also be unusable ( e.g. 131200x600x24 bit is about 250 Mb).
Any help on how I could plot the image for both speed and accruacy.
Many thanks,
|
|
|
|
|
Hi, I am curious to ask you if you have come up with a strategy for your solution yet, and, have you considered doing this in WPF rather than WinForms.
I think a critical factor here would the latency of time-to-display you, or the end-user, would be willing to tolerate. Can the end-user manipulate the size of the view-port ?
You mention having "1000 pixels to plot them in:" I'm trying to infer from that number a possible size of view-port, and ... assuming 3 bytes per pixel for color information, or 4 for color + alpha ... I come up with a very small view-port: unless each virtual-pixel is 'magnified' into a chunk of many screen pixels.
A final question: can you assume that you are dealing with a 'static' data-set here, or, are you getting real-time changes ?
The discussion here[^] may give you some ideas for strategy. My guess is you are going to need 'unsafe' access to the 'raw' bytes.
... edit 1 ...
Can you assume the consumer of your application has a certain amount of memory available ?
The discussion here[^] (particularly the comments by MusiGeneis and Hans Passant) may be useful to understand some 'misleading' aspects of the GDI+ "out of memory" Exception, and Passant's answer provides a useful Enum of GDI+ error codes you can use.
... end edit 1 ...
best, Bill
"Reason is the natural order of truth; but imagination is the organ of
meaning." C.S. Lewis
modified on Monday, July 18, 2011 3:05 AM
|
|
|
|
|
I am in the end way of solving hooked process and related problem. I have extracted the controls some how of other managed processes and simulate those controls on the some other seperate process. Now after somehow drawn those controls on other processes exactly on those position at which they were inside the original processes, I want to send input to those actual processes , which do occur on the simulator process'es simulated controls. So that If somehow the simulator's control (e.g Button) recieve "click" , it should transfer to actual process button control's event handler
Let say I have managed process(TestProcess-A) having several controls (e.g Buttons,TextBox,TextAreas,Grids) and I have transferred all the properties associated with each controls to some other remote process (let say Simulator Process B) and drawn these controls exactly at the same position where it was in actual process after reading these properties.
I want now, if some how the click occured on these simulated controls, it must flown towards actual controls drawn on actual process. i.e if some SIMULATED Button recieve click on Simulator's process, it should occurred and on the actual process (Test Process A)'s actual Button.
So that if some functionality written in that buttons's event handler, it should be executed after there in actual process (Test Process-A).
Note:
I am developing .NET automated testing framework, for that I need to automate all managed processes those having GUIs.
|
|
|
|
|
I am facing a problem related to get out all the controls from some hooked process. My SpyDll launched into hooked process sucessfully, But when I check the statement
Control control = Control.FromHandle(MainWindowHandle), it returns null into control object where "MainWindowhandle"is just a native main window handle of that hooked process, which you always take from .NET "Process" class after launching that process.
But STRANGLY it happens that in some other hooked process which is the same C# .NET application, it returns valid object of Main "WinForm".
So why it will not work in above case? Are there any exceptions to use "MainWindowHandle" properly. In my case both are seperate .NET managed processes programmed in C#. Any process configuration needs to maintain specially while creating that process?
Regards Usman
|
|
|
|
|
I am using datagrid control to display drill down data through a dataset. it works fine i.e. displays parent records in required manner (with a plus sign) but on click of plus in place of showing child rows it shows a link with name of relation I defined in dataset.
can any one suggest me where I am missing?
With Thanks & Regards
Amit Sk Sharma
modified on Wednesday, June 29, 2011 6:56 AM
|
|
|
|
|
Considering none of the out-of-the-box datagrid in Windows Form supports drill-down like that, you're going to have to explain what you're using for a grid and/or where it came from.
It sounds as though this is some grid you threw together yourself to add drill-down support, and you've obviously got the implementation wrong.
|
|
|
|
|
Actually, you are incorrect. The DataGridView (and I think the DataGrid in .Net 1.1) does indeed support drilldown through relations, in the manner the OP describes. I have never investigated how to use it effectively, though.
EDIT: see answer below. The DataGrid does, the DataGridView does not.
modified on Wednesday, June 29, 2011 1:14 PM
|
|
|
|
|
He's correct. The Windows DataGridView doesn't support this out of the box, nor does the DataGrid. It's quite common on webpages, not in Forms.
Bastard Programmer from Hell
|
|
|
|
|
Actually, no I'm not incorrect. None of the Windows Forms grids support drilldown. I don't know what you're talking about, but I'm talking about the functionality you see in Access where you click a little "+" symbol and the grid splits, showing you the related records from another table. No, the Windows Forms DataGridxxx controls do not support that.
|
|
|
|
|
 I was half right. The DataGrid (but strangely, not the DataGridView) supports drilldown through relations. Here is a test case to demonstrate:
using System.Data;
using System.Windows.Forms;
class Test {
DataSet ds;
void SetUpData(){
ds = new DataSet();
DataTable dt = new DataTable("lookupTarget");
DataColumn c = new DataColumn("id", typeof(int)); dt.Columns.Add(c);
dt.PrimaryKey = new DataColumn[]{ c };
c = new DataColumn("desc", typeof(string)); dt.Columns.Add(c);
ds.Tables.Add(dt);
dt = new DataTable("main");
c = new DataColumn("id", typeof(int)); dt.Columns.Add(c);
c.AutoIncrement = true;
dt.PrimaryKey = new DataColumn[]{ c };
c = new DataColumn("lookup", typeof(int)); dt.Columns.Add(c);
ds.Tables.Add(dt);
DataRelation dr;
dr = new DataRelation("testRelation", ds.Tables["main"].Columns["lookup"], ds.Tables["lookupTarget"].Columns["id"], false);
ds.Relations.Add(dr);
}
void PopulateData(){
DataRow row;
DataTable lookupTarget = ds.Tables["lookupTarget"];
DataTable main = ds.Tables["main"];
row = lookupTarget.NewRow();
row["id"] = 1;
row["desc"] = "Some stuff";
lookupTarget.Rows.Add(row);
row = lookupTarget.NewRow();
row["id"] = 42;
row["desc"] = "Don't panic";
lookupTarget.Rows.Add(row);
row = main.NewRow();
row["lookup"] = 1;
main.Rows.Add(row);
row = main.NewRow();
row["lookup"] = 1;
main.Rows.Add(row);
row = main.NewRow();
row["lookup"] = 42;
main.Rows.Add(row);
}
Form Form {
get {
Form f = new Form();
DataGrid dgv = new DataGrid();
dgv.Dock = DockStyle.Fill;
dgv.DataSource = ds.Tables["main"];
f.Controls.Add(dgv);
return f;
}
}
static void Main(){
Test test = new Test();
test.SetUpData();
test.PopulateData();
Application.Run(test.Form);
}
}
Change the variable 'dgv' to a DataGridView and it doesn't work any more.
I am not aware of a way to make the expansion do anything other than show a link, though.
|
|
|
|
|
I know. There's also no way to make the DataGrid show the child records. That's why I said what I did.
He either has to roll his own or use a third party datagrid to do this.
|
|
|
|
|
I have more than one tables in my dataset and I have defined relationship between them.
sqlDataAdapterClients.Fill(dataSetTimeTracker, "Client");
sqlDataAdapterProjects.Fill(dataSetTimeTracker, "Project");
dataSetTimeTracker.Relations.Add("Intake2Episode",
dataSetTimeTracker.Tables["Client"].Columns["ClientID"],
dataSetTimeTracker.Tables["Project"].Columns["ClientID"]);
dataGrid1.SetDataBinding(dataSetTimeTracker, "Client");
Now my datagrid shows me rows from Client with plus sign and when I click on that plus sign it shows name of relations "Intake2Episode" as a link there in place of respective rows from Project table. wish I could share the screen shot with you.
My issue lies here, I am not clear from where (which setting needs to be done)I can get actaul rows in place of relationship.
With Thanks & Regards
Amit Sk Sharma
|
|
|
|
|
I had to do some digging to find out which grid you were using. I said you had to say what you were using and you didn't do that. What are you using that old-ass grid for?? Nobody uses it anymore.
I see what you're getting at, and what you're seeing is the expected behavior. There is no support in the DataGrid for showing the rows instead of that link.
In order to get what you want, you'll either have to roll-your-own version of the DataGridView or use a third party data grid control. Just about every vendors grid supports the drill down functionality.
|
|
|
|
|
I am working on a proposal for am Xml Universal Message Editor (XUME).
I am considering a tree based interface for the data entry.
I cant see an example of a treeview with both a lablel and textbox per node. I am considering a twin tree approach, the left tree will have the element names as standard label nodes, the right tree will be textboxes for the elemment values. There will be no visible controls on the right side tree, it will take all its queues form the left side tree, and the user will perceive it as a single tree.
Have I a plan, or is this a one way ticket to the hall of shame?
Ger
|
|
|
|
|
If I understand your question correctly, your first tree seems to be okay, but why do you need another tree for the element values? A list view should work as long as you're using it to add/edit/update the attributes for the element selected in the tree.
|
|
|
|
|
Purely experimental. No absolute techincal need to.
Ger
|
|
|
|
|
go ahead and let me know how it goes... 
|
|
|
|
|
There may well be an article in there if I can make it happen
Ger
|
|
|
|
|
KA BOOM well that one didn't work. If it does not get you into the hall of shame it will almost certainly drive you nuts.
With WPF/SL is would be a trivial matter
I have used the treeview/listview but then all your edits are in a column rather than the 2 piece treeviewitem
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Check out the several TreeListView articles here on CP, such as: Virtual Mode TreeListView by yetibrain[^].
fyi: some commercial WinForm TreeViews, like IntegralUI TreeView, from Lidor Systems, which I use, easily support WinForm controls within each Node: so it would be trivial to have both a Label and an editable TextBox within each Node.
best, Bill
"Reason is the natural order of truth; but imagination is the organ of
meaning." C.S. Lewis
|
|
|
|
|
|