Question how do i delete or remove comments inside the button programatically?

poringgunner

Active member
Joined
Feb 23, 2014
Messages
42
Programming Experience
Beginner
hi. someone can give help? i need to finish my project this month :(
my problem is how can i delete comments (/*) inside of this button
        private void button3_Click(object sender, EventArgs e)
        {
            /*
            if (richbox1.Text.Equals(richbox2.Text))
            {
                MessageBox.Show("Equal");
            }
            else
            { 
                MessageBox.Show("Not Equal"):
            }
             */
        }

i want to delete it when i click the checkedbox. someone can help?
thanks in advance
 
Last edited by a moderator:
No, no, no. You are under a serious misconception. Those comments don't exist at run time so how could you delete them? The source code doesn't even exist at run time. You don't edit source code at run time. You write source code that is going to make the appropriate decisions and perform appropriate tasks at run time. If you only want to execute some code when a CheckBox is checked then you put it inside an 'if' block that evaluates the Checked property of that CheckBox:
private void button3_Click(object sender, EventArgs e)
{
    if (checkBox1.Checked)
    {
        if (richbox1.Text.Equals(richbox2.Text))
        {
            MessageBox.Show("Equal");
        }
        else
        {
            MessageBox.Show("Not Equal"):
        }
    }
}
That's pretty elementary stuff so you ought to review whatever notes or reference text or tutorial you're learning from.
 
the problem is.. i dont have richtextbox on form. i just create a rtb in code. like this..
RichTextBox rich = new RichTextBox { Parent = tab, Dock = DockStyle.Fill, Name = " richbox" + f.ToString(), Enabled = false }
it depends on openfiledialog.. it i browse multiple files example. 5 files.. then the rtb will automatic create depends on the browse. and may another problems i dont know how to know the name of each rtb that will create.
 
That's not a problem. You could simply add your RichTextBoxes to a collection and then access them by index. Alternatively, you appear to be adding each RichTextBox to a TabPage so you can access the appropruate TabPage first, e.g. the SelectedTab of a TabControl, and then get the RichTextBox it contains via its Controls collection. You could even define your own class that inherits TabPage and creates its own RichTextBox and exposes it via a property.
 
Here's an implementation of the last suggestion:
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    internal class RichTextTabPage : TabPage
    {
        public RichTextTabPage()
        {
            this.RichTextBox = new RichTextBox();
            this.RichTextBox.Dock = DockStyle.Fill;
            this.Controls.Add(this.RichTextBox);
        }

        public RichTextBox RichTextBox { get; private set; }
    }
}
Now you can add instances of that class to your TabControl instead of vanilla TabPages. You can access the RichTextBox on each one via the property, e.g.
this.tabControl1.TabPages.Add(new RichTextTabPage{Text = "RTF"});
var selectRichTextBox = ((RichTextTabPage) this.tabControl1.SelectedTab).RichTextBox;
 
As I have already said, their Name will be whatever you set it to but that is irrelevant because there is no corresponding variable. Look at this code for example:
Dim rtb1 As New RichTextBox

rtb1.Name = "MyRichTextBox"

Dim rtb2 As RichTextBox = rtb1
What's the name of that RichTextBox? Is it rtb1? "MyRichTextBox"? rtb2? You need to understand that the RichTextBox and a variable that you use to access the RichTextBox are not the same thing.

As I have already told you, if you use my example code then you will get the RichTextBox from the RichTextBox property of the appropriate TabPage. How you get that TabPage is up to you. Once you have a reference to the RichTextBox you can get its Text or Rtf or whatever. How you came by that reference is irrelevant.
 
this is my full code. and my only problems is.. i cant call the richbox name.
        public void button1_Click(object sender, EventArgs e)
        {
            //Create opendialog            
            OpenFileDialog browse = new OpenFileDialog();
            browse.Filter = "Text File|*.txt";
            browse.Multiselect = true;
            browse.RestoreDirectory = true;
            
            if (browse.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                //Conditional Statement                                                               
                    foreach (TabPage tabcon in tabControl1.TabPages)
                    {
                        if (tabcon.Text == browse.SafeFileName)
                        {
                            tabControl1.TabPages.Remove(tabcon);
                            MessageBox.Show("File(s) already Exist! - " + tabcon.Text);                                                       
                            break;                            
                        }                                 
                    }
                    
                    foreach (String file in browse.FileNames)
                    {
                        //Create Tab control and tab pages
                        TabPage tab = new TabPage() { Text = System.IO.Path.GetFileName(file) };
                        tabControl1.TabPages.Add(tab);
                        tabControl1.SelectedTab = tab;
                        //Create richtextbox                 
                        RichTextBox rich = new RichTextBox { Parent = tab, Dock = DockStyle.Fill, Name = "richbox" + f++, Enabled = false };
                        rich.LoadFile(file, RichTextBoxStreamType.PlainText);                        
                        string test1 = rich.Name;
                        //Remove the blank lines and comments                
                        rich.Text = Regex.Replace(rich.Text, @"/\*()-_+=,.:;'\[]~`{}|<>*(.*?)\*/", "", RegexOptions.Multiline);
                        rich.Text = Regex.Replace(rich.Text, @"/\*(.*?)\*/", "", RegexOptions.Multiline);
                        rich.Text = Regex.Replace(rich.Text, @"//*(.*?)//", "", RegexOptions.Multiline);
                        rich.Text = Regex.Replace(rich.Text, @"//()-_+=,.:;'\[]~`{}|<>*(.*?)//", "", RegexOptions.Multiline);
                        rich.Text = Regex.Replace(rich.Text, @"^\s*$(\n)", "", RegexOptions.Multiline);
                        rich.Text = Regex.Replace(rich.Text, @" . ", "", RegexOptions.Multiline);
                        //Create label
                        Label numchar = new Label { Parent = tab, Dock = DockStyle.Top };
                        Label charnum = new Label { Text = " Characters" };
                        Label test = new Label { Text = " %" };
                        Label space = new Label { Text = " " };
                        //Count all characters
                        int letter = 0;
                        int count1 = 0;
                        int line = rich.Lines.Count();
                        int sum = 0;
                        int count = rich.Lines[0].Length;                        
                        string letonly = rich.Text;
                        foreach (char c in letonly)
                        {
                            if (char.IsLetter(c))
                            {
                                letter++;
                            }
                            if (char.IsDigit(c))
                            {
                                letter++;
                            }
                            if (char.IsSymbol(c))
                            {
                                letter++;
                            }
                            if (char.IsPunctuation(c))
                            {
                                letter++;
                            }
                            
                        }
                        foreach(char c in rich.Lines[0])
                        {
                            if(char.IsLetter(c))                            
                            {                               
                                count1++;
                                sum = count1 / count * 100;
                            }                           
                        }
                        numchar.Text = letter.ToString() + charnum.Text + space.Text + line.ToString() + space.Text + count.ToString() + space.Text + sum.ToString() + test.Text + test1.ToString();


                    }   
                }            
         }




.if you know what is the wrong here plss tell me
 
Last edited by a moderator:
It's important to understand the difference between objects and references to objects so I'm going to spend a bit more time on that. Programming objects are modelled on real-world objects so you generally should look at how real-world objects work to understand how programming objects work. Consider my father. His name is Tom. My sister and I call him Father, my mother calls him Husband, may grandparents call him Son, my uncles and aunts call him Brother and the players on his football team call him Captain. He's just one person though, and his name is Tom. Those others are just different ways to refer to the one man.

Your RichTextBox is the same. It's just one object and its name is whatever you set its Name property to. That doesn't magically create a member variable in your form though. A variable is simply a way to refer to an object. As I showed in my earlier code example, you can have multiple variables referring to the same object and none of those variables have to match the name of the control. You don't even have to set the Name and you normally don't when creating controls at run time.

The relevant point for you is that, if you use my code example, you can reference a RichTextBox object via the RichTextBox property of the appropriate RichTextTabPage. You get a reference to the TabPage first in whatever way is appropriate and then you get a reference to the RichTextbox from that. That rererence is exactly the same as if you had added a RichTextBox in the designer and then used a member variable to access it. A reference to a RichTextBox is a reference to a RichTextBox, no matter how you came by it. Once you have that reference, you use it however you like.
 
this is my full code. and my only problems is.. i cant call the richbox name.

.if you know what is the wrong here plss tell me

What's wrong is the way you are thinking. STOP focusing on the name. The name IS NOT RELEVANT. It's the object, not the name of the object, that is relevant. I have told you how to access the RichTextBox object using my code example. If you're not going to use my code then, as I said earlier, you can access it via the Controls collection of its parent, e.g.
var rtb = (RichTextBox) myTabPage.Controls[0]
That assumes that there are no other controls on the TabPage with the RichTextBox. How you get a reference to the TabPage is up to you.
 
ok i wait for it.. i need to finish that before the end of this day.
i need to pass it for my project. plss help :( sorry.. i dont know what is wrong to my code. that's my only problem the name of rtb. because it automatically create when i browse a text file. and i need the name of each for the compared button.. plss i need your help :(
 
Apparently you are determined not to understand what I'm saying because you keep insisting that you need the name despite my having told you repeatedly that the name is not relevant. You can't help those who refuse to be helped so I'm not going to try any further.
 
aw.. sorry i did not see your post ealier sorry for that.
i just put
var rtb = (RichTextBox) myTabPage.Controls[0]
to my code? and remove this code
TabPage tab = new TabPage() { Text = System.IO.Path.GetFileName(file) };
tabControl1.TabPages.Add(tab);
tabControl1.SelectedTab = tab;
//Create richtextbox
RichTextBox rich = new RichTextBox { Parent = tab, Dock = DockStyle.Fill, Name = "richbox" + f++, Enabled = false };
rich.LoadFile(file, RichTextBoxStreamType.PlainText);
string test1 = rich.Name;
or i just put it inside?
 
You still need to add the RichTextBox to the TabPage in the first place. The code I suggested is to get a reference to that RichTextBox later, when you want to use its contents.
 
Back
Top Bottom