|
Thank you! That was so motivational! You're right what's the worse that can happen
|
|
|
|
|
You're welcome!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
What OG said.
Even if you hire someone, you need to educate yourself to some level first; else you will not know if you are being taken advantage of.
|
|
|
|
|
Dear Experts,
I am trying to get the value for current cell in DatagridView. I wrote code
dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
in CellLeave event.
but the code raise an error.
Object reference not set to an instance of an object.
But if I write the code in Button_Click event, it is working properly.
Please help.
Ahmad
|
|
|
|
|
Use the debugger.
When you get the exception, use the debugger to look at the various parts of that, and work out what the values of each part are: e.ColumnIndex, e.RowIndex, and so forth.
Personally, I'd be using dataGridView1.Rows[rowindex].Cells[columnIndex] and checking the return value to make sure there is one.
I suspect you have just mixed up the row and column, and been lucky not to get an index out of range error.
But the debugger is the best way to find out.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Thank you Sir,
I have tried your code, but I get the same error.
Below is the exception message I received.
The code works under Button_Cleck event.
System.NullReferenceException was unhandled
Message=Object reference not set to an instance of an object.
Source=ERP
StackTrace:
at ERP.frmCalendar.dataGridView1_CellLeave(Object sender, DataGridViewCellEventArgs e) in C:\Projects\ERP\ERP\GL\frmCalendar.cs:line 103
at System.Windows.Forms.DataGridView.OnCellLeave(DataGridViewCellEventArgs e)
at System.Windows.Forms.DataGridView.OnCellLeave(DataGridViewCell& dataGridViewCell, Int32 columnIndex, Int32 rowIndex)
at System.Windows.Forms.DataGridView.CommitEdit(DataGridViewCell& dataGridViewCurrentCell, DataGridViewDataErrorContexts context, DataGridViewValidateCellInternal validateCell, Boolean fireCellLeave, Boolean fireCellEnter, Boolean fireRowLeave, Boolean fireRowEnter, Boolean fireLeave)
at System.Windows.Forms.DataGridView.EndEdit(DataGridViewDataErrorContexts context, DataGridViewValidateCellInternal validateCell, Boolean fireCellLeave, Boolean fireCellEnter, Boolean fireRowLeave, Boolean fireRowEnter, Boolean fireLeave, Boolean keepFocus, Boolean resetCurrentCell, Boolean resetAnchorCell)
at System.Windows.Forms.DataGridView.CommitEditForOperation(Int32 columnIndex, Int32 rowIndex, Boolean forCurrentCellChange)
at System.Windows.Forms.DataGridView.ScrollIntoView(Int32 columnIndex, Int32 rowIndex, Boolean forCurrentCellChange)
at System.Windows.Forms.DataGridView.TabToNextCell()
at System.Windows.Forms.DataGridView.ProcessTabKey(Keys keyData)
at System.Windows.Forms.DataGridView.ProcessDialogKey(Keys keyData)
at System.Windows.Forms.Control.ProcessDialogKey(Keys keyData)
at System.Windows.Forms.TextBoxBase.ProcessDialogKey(Keys keyData)
at System.Windows.Forms.Control.PreProcessMessage(Message& msg)
at System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)
at System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)
at System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FPreTranslateMessage(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at ERP.frmLogin.runAppl() in C:\Projects\ERP\ERP\frmLogin.cs:line 103
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
|
|
|
|
|
So use the debugger and find out which bit is null.
Then you can look at why!
But I can't do that for you - I have no access to your computer...
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Hi,
when you get "Object reference not set to an instance of an object" exceptions some of the properties you invoke have returned null , in this case most likely Value for an empty grid cell. Check the Value for null before using it:
var gridValue = dataGridView1[e.ColumnIndex, e.RowIndex].Value;
if( gridValue != null )
{
string gridStringValue = gridValue.ToString();
...
}
|
|
|
|
|
string cellval = "";
if(dataGridView1[e.ColumnIndex, e.RowIndex].Value != null){
cellval = dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
}
I usually use Convert.ToString(...); in such cases, because it will convert a null to "" automatically.
(not useful in all cases)
|
|
|
|
|
I want to write a string to a memory mapped file. I have used Marshalling to achieve desired size of string. I am getting an exception when I try to write my structure which contains a string and an int. If I remove the string, The code runs successfully.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Runtime.InteropServices;
using System.IO.MemoryMappedFiles;
namespace ConsoleApplication25
{
class Program
{
static void Main(string[] args)
{
MemoryCreate<MemWriter> SharedData = new MemoryCreate<MemWriter>();
MemWriter MemWriterObj = new MemWriter();
if (!SharedData.open()) return;
MemWriterObj.f=10;
MemWriterObj.mystring = "Test";
SharedData.Writer = MemWriterObj;
Console.ReadLine();
SharedData.close();
}
}
class MemoryCreate<T> where T:struct
{
MemoryMappedFile mmf;
MemoryMappedViewAccessor accessor;
public bool open()
{
try
{
mmf = MemoryMappedFile.CreateNew("Test", 100);
accessor = mmf.CreateViewAccessor(0, 0);
return true;
}
catch(Exception e)
{
Console.WriteLine(e.Message);
return false;
}
}
public void close()
{
accessor.Dispose();
mmf.Dispose();
}
public T Writer
{
set
{
try
{
accessor.Write<T>(0, ref value);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
[StructLayout(LayoutKind.Sequential,Pack=1,CharSet=CharSet.Ansi)]
struct MemWriter
{
public int f;
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=16)] public string mystring;
}
}
[edit]Code block added - OriginalGriff[/edit]
modified 2-May-15 7:15am.
|
|
|
|
|
|
The exception message is "The specified Type must be a struct containing no references. Parameter name: type"
|
|
|
|
|
Assuming the exception occurs where I guess (since you have not bothered to tell us), I suspect it may be because mystring is a reference type.
|
|
|
|
|
Oh I am sorry.
The exception is raised when I try to write the struct in memory mapped file i.e. this line - SharedData.Writer = MemWriterObj;
I have marshalled mystring hoping that it would solve the problem but it doesn't.
Any idea how I can make it work?
|
|
|
|
|
|
Thank you.
But I have already checked this, it shows how to write struct having int(which I am able to do successfully), I want to write a struct having string.
|
|
|
|
|
Well, as explained, you can't; you can only write value types in a struct. If you want to write a string then you need to use one of the alternate methods, as shown in the article.
|
|
|
|
|
Basically what the error is saying is "you can't do that at all".
A struct is a value type - it contains all it's information directly within the struct itself, and teh size is always fixed at compile time. "Basic types" such as int, float, and double are also value types.
A string is a reference type - the variable you declare is not the string itself but a reference to the memory that actually contains the string data - the reference itself is a fixed size, but teh data it refers to is not.
The error message is saying "you can only give me fixed size data" - a value type, not a reference type - and that it cannot contain any references.
So the struct you pass through can only contain basic types, and structs containing basic types - no reference types, which means no strings, no arrays, no Lists, nothing complex at all.
I suspect you are going to have to find a better solution to your problem, and drop the idea of memory mapped files altogether. What exactly are you trying to do that you think you need these?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
@OrigianlGriff...That is the reason I used MarshalAs(UnmanagedType.ByValTStr,SizeConst=16)] public string mystring;
Which gives my string a fixed size(16) if I am not wrong.
I am trying to create an application which writes to a memory mapped file("test"). There will be another application which reads from the same memory mapped file and performs the specified operation.
|
|
|
|
|
Doesn't matter: it's still a reference type, and you can't use it!
Are you just trying to use the file to communicate between the two apps?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Ok.
Is there no other way to do it?
|
|
|
|
|
For writing data to an MMF that is more complex than a struct containing only value type members you would have to serialize that data into a byte array and then write that byte array to the MMF using MemoryMappedViewAccessor.WriteArray<T>[^]. In order to be able to read it back, you should also write the length of the byte-array to the MMF, probably directly before the start of the byte-array.
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
I need a runtime is similar to the Visual Studio forms designer examples, I hope it's not a Windows form, but Windows Presentation Foundation, it has a few features I need:
1. to design window
2. in the design window, add widge
I am very grateful to you if you help me
|
|
|
|
|
And?
What have you tried?
Where are you stuck?
What help do you need?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Environment: - Windows XP/Windows7 32bit, 64 bit/Windows 2008 Server 64 bit/Windows 2012 Server 64 bit
.
Application Details: -
Application.exe [Visual Studio C# created]
Extract.exe [Visual Studio C# created]
.Net Frame Work: - 3.5 .Net Frame Work
.
Product Description: - We have a product Application.exe, which launch another process Extract.exe in command line for extracting image documents, after extraction; we store data into text file and read from Application.exe and store into data base.
Note: - Application.exe start from services.msc.
.
We run multiple instance of Application.exe after renaming it as Application-FirstInstance.exe, Application-SecondInstance.exe; each application exe launches Extract.exe. We create service for each Application-{Instance}.exe. Application works fine in multiple instances environment, but during run of each service; there are many Extract.exe and Application-{Instance}.exe visible in task manager.
.
Requirement Description: -
We want to kill related Extract.exe on stopping Application-{Instance}.exe from services, and it would be instant operation.
But we have to make sure that related Extract.exe is deleting, while stopping Application-{Instance}.exe from services. What will be right way to identifying particular Application-{Instance}.exe and related Extract.ext and killing operation?
.
Kindly assist us to find the resolution. Please let us know, if more information is required.
We will be really thankful.
|
|
|
|
|